面向对象的三大特性
封装 继承 多态
封装是面向对象三大特性之一
封装 继承 多态是面向对象三大特性。
封装是把属性私有化,对外提供可以方法的方法!
封装:
提高代码复用性
提高安全性
把细节隐藏,对外提供可以访问的方法,供对象调用
成员变量和局部变量同名的时候。this关键字使用可以避免变量重名导出调用不确定的问题。
this关键字都是调用本类的属性在实现属性私有化时常用
私有化后对外提供可以访问的方法(getter setter方法)
继承****的概念和特点
子类能拥有父类的属性
子类访问权限不能小于父类
重写是在子类可以重写父类的方法
访问权限不能小于父类,返回值类型相同 方法名相同参数列表相同
重载一般在同一个雷利多个同名不同参的方法
1.1 继承的好处
继承提高了代码复用性,提高了开发效率。
继承产生父子关系,为多态提供前提
2.继承后子类和父类中的成员关系
子类和父类成员属性同名时,想要调用父类的成员属性用super关键字
子类和父类成员方法同名时,是方法的重写,想要在方法里调用父类的同名方法需要用super
调用
父类 superClass
子类 subClass
3.方法重写和方法重载的区别
3.1 重写方法:
重写是有父子类关系,子类重写书写父类的方法
访问权限不能小于父类,返回值类型相同,方法名相同,参数列表相同
3.2 重载方法:
一般在同一个类里面,多个同名不同参方法
同名:方法名相同
不同参:参数数据类型不同,参数个数不同,参数顺序不同
和返回值类型无关
重载和重写的比较
a.修饰符:
- 重载对两个方法没有任何要求
- 重写对权限修饰符有要求,子类的方法的权限>=父类的方法的权限
- b.返回值类型:
- 重载对两个方法返回值类型没有要求
- 重写要求子类的方法和父类中被重写的方法返回值一致
- c.方法名:
- 重载要求两个方法方法名必须一致
- 重写要求子类的方法和父类中被重写的方法方法名一致
- d.形参列表:
- 重载要求两个方法的形参列表必须不同(形参类型不同,形参个数不同,形参类型顺序不
同)
重写要求子类的方法和父类中被重写的方法的形参列表一致
*** 五、抽象类**
1.抽象类特点
1、抽象类和抽象方法都需要被abstract修饰。抽象方法一定要定义在抽象类中。
2、抽象类不可以直接创建对象,原因:调用抽象方法没有意义。
3、只有重写了抽象类中所有的抽象方法后,其子类才可以创建对象。否则该子类还是一个抽
象类。
之所以继承抽象类,更多的是在思想,是面对共性类型操作会更简单。
- 抽象类的细节问题
1、抽象类一定是个父类?
是的,因为不断抽取而来的。
2、抽象类中是否可以不定义抽象方法。
a.修饰符:
- 重载对两个方法没有任何要求
- 重写对权限修饰符有要求,子类的方法的权限>=父类的方法的权限
- b.返回值类型:
- 重载对两个方法返回值类型没有要求
- 重写要求子类的方法和父类中被重写的方法返回值一致
- c.方法名:
- 重载要求两个方法方法名必须一致
- 重写要求子类的方法和父类中被重写的方法方法名一致
- d.形参列表:
- 重载要求两个方法的形参列表必须不同(形参类型不同,形参个数不同,形参类型顺序不
同) - 重写要求子类的方法和父类中被重写的方法的形参列表一致
抽象方法定义的格式:
public abstract 返回值类型 方法名(参数);
抽象类定义的格式:
abstract class 类名 {
}
是可以的,那这个抽象类的存在到底有什么意义呢?不让该类创建对象,方法可以直接让子类去
使用
3、抽象关键字abstract不可以和哪些关键字共存?
private:私有的方法子类是无法继承到的,也不存在覆盖,而
abstract和private一起使用修饰方法,abstract既要子类去实现这个方法,而private
修饰子类根本无法得到父类这个方法。互相矛盾
六、访问权限修饰符
public 访问权限最大
private 访问权限最小,private只能本类中访问
修饰符 同一类中 同一包中不同类 不同包中的无关类 不同包中的父子类
public Y Y Y Y
protected Y Y Y N
default Y Y N N
private Y N N N