一、对象
1.组成部分:
(1) 对象的属性:代表对象有什么外在特点,体现对象的静态部分,使用变量进行表示
(2) 对象的方法:代表对象有什么功能,能干什么;体现对象的动态部分,使用函数/方法进行表示2.类和对象的关系
(1) 类是对象的模板
(2) 对象是类的实例注意:一个类可以创建出多个对象
二、类的定义
1.类用于描述该类对象有哪些属性和方法,类有两部分组成
(1)属性
(2)方法
2.类的定义
class 类名{ // 1. 属性 // 2. 方法 }3.属性:又称成员变量
(1) 属性:成员变量
(2) 位置:定义在类以内,方法以外
(3) 语法:数据类型 变量名; // 只声明
数据类型 变量名 = 值; // 声明的同时并 初始化
(4) 成员变量具有默认值:同数组
整数类型:0
小数类型:0.0
字符类型:空字符(\u0000)
布尔类型:false
对象类型:null
(5) 成员变量的作用范围:至少在本类中有效
(6) 成员变量可以和局部变量命名冲突,当命名冲突时,优先使用局部变量
4.方法
(1) 位置:定义类以内,其他方法以外
(2) 语法:
函数:public static 返回值类型 函数名(形参){
// 函数的实现
}
方法:public 返回值类型 方法名(形参){
// 方法的实现
}
注意:方法不在加 static
(3) 方法的定义:
修饰符 返回值类型 方法名(形参){
// 方法的实现部分
}
(4) 方法的定义分为:方法的声明和方法的实现
a. 方法的声明: 修饰符 返回值类型 方法名(形参)异常
-> 修饰符:一个方法可以定义多个修饰符,0~n个,没有位置先后要求
-> 返回类型:void/8种基本数据类型+对象类型
-> 方法名:望文生义、第一个单词首字母小写,其余单词首字母大写
-> 异常:后续讲解
b. 方法的实现:{}
(5) 方法的重载(overload):(方法名相同,参数列表不同)
a. 理解:在一个类中可以多个名字相同,但是参数不同的方法
b. 要求:
i. 方法名相同
ii. 参数列表不同:数据类型、个数、顺序
iii. 对 修饰符、返回值类型、异常没有要求
c. 注意:如果仅仅方法的参数名不同,不能构成方法的重载
d. 使用:根据调用时,实际给的参数决定使用哪一个重载方法
对象名.方法名(实参);
三、对象的创建
1.语法:类名 对象名 = new 类名();
2.操作对象的属性和方法:
(1)操作对象的属性:
对象名.属性 = 值;
对象名.属性名
(2)调用对象的方法:
对象名.方法名(实参);
四、构造方法(Construtor)
1.构造方法:是一种特殊的方法,定义类以内,其他方法以外
2.特点:
(1)方法名必须和类名相同
(2)没有返回值类型(连void都没有)
语法:修饰符 类名(形参){}
(3)允许重载,一个类中可定义多个构造方法,但无参构造只能定义一个
(4)构造方法不允许手动调用,在创建对象时被调用
3.注意事项:
(1) 对象在创建时,使用一次构造方法;一个构造方法可以创建多个对象
(2) 如果在一个类中没有定义任何的构造方法,则jvm默认提供一个 公开的、无参数的构造方法;
如果在类中定义任何有参数的构造方法,则jvm就不再提供默认的构造方法;-》可以手动提供4.作用
(1) 用于创建对象
(2) 用于给属性赋值总结:开发时,一个类通常定义2个构造方法,一个无参,一个有参构造
五、this的应用
1.第一种应用:this.
(1) this代表当前对象,用于访问当前对象的属性 和 成员方法
(2) this.属性 / this.方法名(实际参数);
(3) this.在访问属性(成员变量)/this.方法名(实参)时,通常可以省略,但是 当成员变量 和 局部变量命名冲突时,可以利用 this.区分出 成员变量
(注意:加了 this. 访问的变量,一定成员变量)
(4) 注意:this. 可以应用在构造方法也可以应用普通成员方法中2.第二种应用:this()
(1) this()只能应用在构造方法中的第一行有效语句
(2) this()/this(实参):代表调用本类的其他构造方法
六、对象创建的过程
1.分配空间:为属性赋默认值
2.初始化:为属性第二次赋值的机会
3.执行构造方法:为属性第三次赋值
七、引用
1.引用:对象类型的变量称为引用
类名 引用名 = new 类名(); 引用类型 对象类型 注意:java是一种强类型的语言,引用的类型必须 和 对象类型一致 Techer t = new Teacher(); Student s = new Student();2.引用存储对象 在 堆空间中的首地址
引用根据存储的地址到堆空间中找对地址对应的对象,称为指向3.每个对象在堆空间相互独立,操作一个对象,不会影响其他对象内容
4.可以单独声明 引用
类名 引用名;
Student s;5.同类型的引用之间可以相互赋值,传递的是对象在堆空间中首地址
6.可以利用null为引用作为初始化的数据,null代表空地址
Student s = null;
注意:如果以 存储 null的引用操作对象,则编译通过,运行报错,错误信息为:java.lang.NullPointerException(空指针异常)7.对象的应用场景:
(1) 引用应用在形式参数上:对应的对象和引用都可以作为实际参数进行传递
(2) 引用应用在返回值上:对应的对象 和 引用都可以作为返回值进行 返回