类与对象
- 类:自定义的数据类型:类是抽象的,概念的,代表一类事务,即是数据类型;
- 对象(属性,行为:具体的实例):具体的,实际的,代表一个具体事物,即是实例;
- 类是对象的模版,对象是类的一个个个体,对应一个实例;
java设计者引入类与对象OPP
从概念上或者叫法上来看,成员变量 = 属性 = 字段
属性是类的一个组成部分,一般是基础数据类型,也可以是引用类型(对象,数组)
- 属性的定义语法同变量,示例: 访问修饰符,属性名称,属性名:
- 访问修饰符:控制属性的访问范围:
- public
- protected
- 默认
- private
- 访问修饰符:控制属性的访问范围:
- 属性的定义类型可以是任意类型,基本数据类型和引用类型
- 属性如果不赋值,有默认值,规则和数组一致
- 真正的对象在堆和方法空间中,栈中是引用
创建对象的形式
- 先声明在创建 :Cat cat;cat = new Cat();
- 直接创建:Cat cat = new Cat();
- 访问对象属性:对象.属性。 cat.name;
类与对象的内存分配机制
引用传递/地址拷贝
类和对象的内存分配机制
- 栈:一般存放基本数据类型和局部变量
- 堆:存放对象(数组等)
- 方法区:常量池(常量,比如字符串),类加载信息
java创建对象简单流程分析:
- 先加载类信息(只会加载一次);
- 分类堆空间,进行默认初始化;
- 把堆的地址赋给对象;
- 进行指定初始化;
对象=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个参数,也可以多个参数,用英文逗号间隔;
- 参数类型可以是任意类型,基本类型,引用类型;
- 调用带参数的方法时,一定对应着参数列表传入相同的参数或兼容类型的参数;
- 方法定义时的参数称为形式参数,简称形参;方法调用时的参数为实际参数,简称实参;形参和实参的类型要一致或兼容,顺序和个数保持一致;
- 方法体:里面写完成具体功能的语句,可以为输入,输出,变量,运算,分支,循环,调用方法,但里面不能再定义方法,即方法不能嵌套定义;
- 方法调用:
- 同一个类中的方法调用,可以直接调用;
- 跨类中的方法调用,需要通过对象名调用,比如 对象名.方法名(参数)
- 跨类的方法调用和方法的访问修饰符相关
- 方法的传参机制