一、继承:
1、继承是从已有类中,派生中新的类,新的类有父类的属性和行为,并且还能扩展新的属性和行为
2、java只支持单继承,私有属性和构造方法不能被继承
3、继承可以传递,如A继承B,B继承C,则A也会有C的功能
4、如果一个类没有显示继承其他类,则该类继承Object
java.lang.Objiect是java中的根类
是所以类对象都有的
作用:
提高了代码的效率,避免了代码的重写,提高代码重用性
语句:[ 修饰符]class 子类名 extends 父类名{}
二、Super
1、保存了父类型特征
2、在有继承关系的体系中,可以通过super表示父类的数据
作用:
1、在成员/构造方法中,区分父类和子类同名的数据(同名后,子类优先级高,想使用父类,就需要使用super.xxx才行)
2、在子类构造方法中,调用指定的父类构造方法
语法 :super(参数);必须在子类构造方法第一行
如果在子类构造方法中,没有使用this(xxx)也没有使用super(xxx),则有super()去调用父类的无参构造,不能同时出现,因为都在构造方法第一行
3、this和 super不能出现在静态上下文
三、Override
override是方法重写/覆写/覆盖,覆写特指成员方法,其他的都不能覆写
应用场景:
1、当父类的功能满足不了子类需求
2、覆写条件
有继承关系的体系
方法名必须一致,如果方法名不一致,就是两个方法
参数列表一致,不然就是方法重载
返回值必须一致
异常只能越来越少
不能有更低的访问权限
3、覆写的意义
功能更强 使用范围越广 错误越少
四、Final
是修饰符,表示最后的,最终的,不能更改
类:final修饰的类,不能被继承
变量:没有默认值,不能二次赋值,必须显式赋值
方法:final修饰的成员方法不能覆写
final修饰的静态变量,被称为常量,public static finalxxx;常量名建议大写
五、多态
软件设计六大原则
单一职责原则:一个方法只做一个事,一个类只负责一个职责
里氏替换原则:能使用父类的地方,一定能使用子类(子类可以扩展,但不可以更改父类的功能,子类有自己特有的功能
依赖倒置原则:高层次不应该依赖低层次,应依赖抽象
接口隔离原则:类和接口之间应建立在最小接口上
迪米特原则:尽量减少依赖
开闭原则:
对修改关闭,对扩展开发
多态
是里氏替换原则的一种体现
能使用父类的地方一定可以使用子类
父类引用指向子类对象
父类引用:使用父类类型 创建的引用类型变量
指向:通过这个引用可以找到
父类类型 变量名 = new 子类();
Animal a = new Animal();
Animal a = new Cat(); 多态
三种用法
1、直接多态 :父类 变量 = new 子类();
2、形参/实参:参数列表用父类声明,调用方法 传递子类对象
public void m1 (Animal a){}
m1(new Cat());
返回值多态:返回值类型是父类类型,返回对象是子类对象
public Animal m2(){
return new Cat();
}
Animal a = m2();
优点:可扩展类强,低耦合
缺点:丢失子类特有属性
多态进行属性调用:
1、父类没有的,都调用不了
2、父类有点,子类没有的,执行父类
3、父类和子类都有,除了成员方法执行子类,其他全部执行父类(只有成员方法可以覆写)