目录
一、初步认识:
JAVA是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。
1.1 面向对象概念:
1.面向对象是思考问题的一种思考方式,是一种思想。
2.类就是一类对象的统称。对象就是这一类具体化的一个实例。
3.面向对象的好处:将复杂的事情变简单了,只要面对一个对象就行。
1.2 面向对象编程的核心:
- 找对象 :由类产生
- 创建对象
- 使用对象
二、类和类的实例化:
2.1 基本语法:
//创建类
class <class_name>{
field; //成员属性
method; //成员方法
}
//实例化对象
<class_name> <对象名> = new <class_name>();
- 成员变量定义在方法的外部,类的内部。
- 成员变量不赋初值不会报错。
2.2 类的实例化
通过一个类可以实例化多个对象。
e.g
Person person = new Person();
- Perosn为类名,person为引用变量,在栈上开辟内存。
- new 关键字用于创建一个对象的实例 。
- 使用 . 来访问对象中的属性和方法:
2.3 类的成员
类的成员可以包含以下:字段、方法、代码块、内部类和接口等。
2.3.1 字段/属性/成员变量
在类的内部,方法的外部。
1、普通成员变量
2、静态成员变量:当前成员变量被static修饰
注:
- 访问时,建议通过类名.静态成员变量访问。(成员方法同理)
- 静态不需要实例化对象。
- 静态成员变量不在对象里,而在方法区。
- 静态属性和对象无关,只和当前类有关。
2.3.2 方法
- 在普通的成员方法中,不能定义静态成员变量。
- 静态的成员方法通过类名调用。
- 普通方法内可以调用静态方法,因为静态方法不依赖于对象,反之则不能。
1、构造方法:
构造方法是一种特殊方法,使用关键字new实例化新对象时会被自动调用,用于完成初始化操作。
规则:
- 无返回值。
- 方法名和类名一致。
注:
- 如果类中没有提供任何的构造函数,那么编译器会默认生成一个不带有参数的构造函数。
- 若类中定义了构造方法,则默认的无参构造将不再生成。
- 构造方法支持重载. 规则和普通方法的重载一致。
2.3.3 代码块:
- 本地代码块:在方法内部定义的
- 实例代码块(构造代码块):在类的里面,方法的外面,一般用于初始化实例成员变量。
- 静态代码块:用static定义,用于初始化静态成员属性。
1、代码块的出现是为了在合适的时候处理某些数据。
2、代码块执行顺序:静态代码块,实例代码块,构造方法
3、静态代码块只执行一次。
4、不实例化对象,就只执行静态代码块。
2.4 封装:
2.4.1 面向对象思想的特征:
继承,封装,多态
2.4.2 封装的概念:
语法层次上来说,字段和方法都被private修饰,此时就说把这个字段或这个方法进行了封装。
2.4.3 访问权限修饰限定符:
-
被 public 修饰的成员变量或者成员方法, 可以直接被类的调用者使用。
-
被 private 修饰的成员变量或者成员方法, 只能在当前类中使用,不能被类的调用者使用。
2.4.4 getter 和setter方法:
当我们使用 private 来修饰字段的时候, 无法直接使用这个字段,此时如果需要获取或者修改这个 private 属性, 就需要使用 getter / setter 方法。
2.4.5 封装的意义:
- 安全
- 降低了对类的使用成本
2.5 匿名对象:
- 匿名对象只能在创建对象时使用。
- 没有引用的对象成为匿名对象。
- 如果一个对象只使用一次,可以考虑使用匿名对象。