java学习日记20230310-类与对象

类与对象

  • 类:自定义的数据类型:类是抽象的,概念的,代表一类事务,即是数据类型;
  • 对象(属性,行为:具体的实例):具体的,实际的,代表一个具体事物,即是实例;
  • 类是对象的模版,对象是类的一个个个体,对应一个实例;

java设计者引入类与对象OPP

 

  

 

从概念上或者叫法上来看,成员变量 = 属性 = 字段

属性是类的一个组成部分,一般是基础数据类型,也可以是引用类型(对象,数组)

  • 属性的定义语法同变量,示例: 访问修饰符,属性名称,属性名:
    • 访问修饰符:控制属性的访问范围:
      • public
      • protected
      • 默认
      • private
  • 属性的定义类型可以是任意类型,基本数据类型和引用类型
  • 属性如果不赋值,有默认值,规则和数组一致
  • 真正的对象在堆和方法空间中,栈中是引用

创建对象的形式

  • 先声明在创建 :Cat cat;cat = new Cat();
  • 直接创建:Cat cat = new Cat();
  • 访问对象属性:对象.属性。 cat.name;

类与对象的内存分配机制

引用传递/地址拷贝

类和对象的内存分配机制

 

  • 栈:一般存放基本数据类型和局部变量
  • 堆:存放对象(数组等)
  • 方法区:常量池(常量,比如字符串),类加载信息

  java创建对象简单流程分析:

  1. 先加载类信息(只会加载一次);
  2. 分类堆空间,进行默认初始化;
  3. 把堆的地址赋给对象;
  4. 进行指定初始化;

  对象=null;会把栈指向堆的连接断掉;

成员方法:简称方法:

  • public 表示方法是公开的;
  • void 表示方法没有返回值;
  • ()表示形参列表,可以接收调用的输入
  • {}表示方法体
  • 方法写好后不去调用是不会执行的
  • public int getSum(){ return res} //public 表示方法访问范围,int表示方法返回值  return表示返回值 

 方法的调用机制:

   1.当程序执行到方法时,就会开启一个独立的空间(栈空间);

   2.当一个方法执行完毕/执行return语句时,就会返回;

   3. 返回到调用方法的地方;

   4.返回后,继续执行后面的代码;

   5.当main方法执行完毕后,整个程序退出;

   

 

  可以将实现的细节封装起。

 

     成员方法的定义:

  1.访问的范围;

  2.返回值类型;

  3.方法名;

  4.参数列表;

  5.方法主体;

  6.方法返回值;

 

注意事项:

  • 一个方法最多有一个返回值;(可以返回数组)
  • 返回类型可以是任意类型,包括基础数据类型和引用数据类型(数组和对象)
  • 如果方法要求有返回值,则方法体中必须有return + 值,而且返回值类型和return后的值必须兼容或相同
  • 如果方法是void,则可以没有return或者return结束;
  • 在实际工作过程中,方法是为了完成某个功能,所以方法名一定要有含义,最好是见名知意,遵循驼峰命名法;
  • 参数列表:
    • 一个方法可以有0个参数,也可以多个参数,用英文逗号间隔;
    • 参数类型可以是任意类型,基本类型,引用类型;
    • 调用带参数的方法时,一定对应着参数列表传入相同的参数或兼容类型的参数;
    • 方法定义时的参数称为形式参数,简称形参;方法调用时的参数为实际参数,简称实参;形参和实参的类型要一致或兼容,顺序和个数保持一致;
  • 方法体:里面写完成具体功能的语句,可以为输入,输出,变量,运算,分支,循环,调用方法,但里面不能再定义方法,即方法不能嵌套定义;
  • 方法调用:
    • 同一个类中的方法调用,可以直接调用;
    • 跨类中的方法调用,需要通过对象名调用,比如 对象名.方法名(参数)
    • 跨类的方法调用和方法的访问修饰符相关
  • 方法的传参机制
    • 基于基本的数据类型,传递的是值拷贝,形参的改变不会影响实参;
    • 引用类型:引用类型传递的是地址,可以通过形参影响实参;😍
    • 对象 == 对象 如何指向同一地址则为真,否则为假 
posted @   、子夜  阅读(26)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
点击右上角即可分享
微信分享提示