一、封装
- private
a)权限修饰符,用于修饰成员变量和成员方法
b)private所修饰的成员只能在自己类的内部调用,访问权限最小
c)好处:可以在方法中对成员变量对访问进行控制 - 封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。也可以说 封装就是将类的属性私有化,并提供公有方法访问私有属性的机制
- 封装的好处:将变化隔离、便于使用、提高重用性、提高安全性。
- 封装的步骤
a)使用private修饰符将类的属性私有化
b)给每个属性提供公有的 Getter/Setter方法
c)在Getter/Setter方法中加入存取控制语句
d)测试运行 - 封装的目的:
a)隐藏类的实现细节。
b)用户只能通过事先提供的共有的方法来访问属性,从而在该方法中加入控制逻辑,以限制对属性不合理的访问。
c)可以进行对数据检查,有利于对象信息的完整性。
d) 便于后期的代码修改,有利于提高代码的安全性和可维护性。 - 构造方法
a)构造方法的作用:使用new关键字创建对象时完成对属性的初始化操作
b)构造方法的三个特征:① 没有返回类型 ② 方法名和类名相同 ③ 无需显式调用
c)当类中没有任何一个构造方法的时候,编译时编译器会默认提供一个无参构造方法 - 方法重载(同名不同参)
a)方法的重载: ① 方法名一样 ② 参数列表不一样 ③ 和返回值类型无关
b)参数列表不一样: ①个数不一样 ②参数类型不一样 ③参数类型对应的顺序不一样
c)方法签名:方法名+参数个数/类型/顺序
二、继承(extends)
- 继承(is-a关系):把相同的属性和方法提取出来,放到一个新的类中
- 继承的作用:可以直接使用父类非私有的成员变量、成员方法
- 继承的好处:提高了代码的复用性,是多态的前提
- 继承的特点:
a)只能单一继承(因为可能出现调用不明确)
b)多重(多层)继承 - 子类可以继承父类中使用public和protected修饰的属性和方法,
子类可以继承父类中使用默认修饰符修饰的属性和方法。 - 子类无法继承父类中使用private修饰的属性和方法。
子类无法继承父类的构造方法。 - Object类是所有类的父类,Java中的所有类都直接或间接的继承自Object
- this关键字
a) this表示当前类对象本身,调用方法的对象。谁调用方法this就是谁
b) this的作用:
① 可以显示隐藏的成员变量,区分成员变量和局部变量重名的情况。
② 在成员方法中调用其他构造方法,不加默认值
③ 在构造方法中调用其他构造方法
c)this语句只能放在构造方法的第一句
this.属性---- 表示调用当前对象的属性,
this.方法---- 表示调用当前对象的方法。 - super关键字
a)super指代父类,super不是对象,创建有继承父类的子类对象,并没有创建父类对象
b)构造方法中默认第一行不是调用子类构造或者不是调用父类构造的时候,默认第一行是调用父类的无参构造,也就是super(); 因为父类也有成员变量,需要子类创建对象的时候对其进行初始化。 - 方法重写
a)当父类的方法不满足子类需求时,在子类中根据需要对从父类中继承下来的方法进行重写编写,称之为方法重写(方法覆盖,方法复写)
b)方法重写必须满足以下条件
①子类的方法必须和父类中被重写的方法签名(名称、参数)相同。
②子类方法的返回类型必须和父类中被重写的方法的返回类型相同或是其子类。
③子类方法的访问修饰符权限必须大于等于父类中被重写的方法的访问修饰符权限。(public>=default>=protected>=private)
三、多态
- 多态就是 同一个引用类型,引用不同的对象调用方法时可以执行不同的操作,即父类引用子类对象
- 多态的前提:
a)要有继承关系
b)要有方法重写
c)父类引用指向子类对象 Fu f = new Zi(); - 多态成员间的特点
a)成员变量:编译期间看左边(如果没有就出错),运行期间看左边,编译还有运行全部是看父类是否有这个成员变量。
b)成员方法:编译期间看左边(如果没有就出错),运行期间看右边(动态绑定,具体是哪个对象就调用哪个对象的方法)
c)静态方法:编译期间看左边(如果没有就出错),运行期间看左边 - 多态的利弊
a)弊:不能使用子类特有成员
b)利:提高代码的可扩展性 - 多态的应用:作为参数使代码提高扩展性和可维护性
- 引用类型转换
a)由小到大(向上转型)
b)由大到小(向下转型):将一个指向子类对象的父类引用赋值给一个子类引用。 (类型)数据;