当子类的构造器调用父类的构造器时,使用super([参数]); 注意:super()必须写在子类构造器方法体中的第一行
所以不能同时显式的存在super(),this()。
3,当在子类的方法,需要调用父类的方法时,super.父类方法名([参数]);
方法的重写 override
当子类从父类继承过来的方法,无法满足子类的功能需求时,子类需要对该方法进行重新实现,这个个过程叫做方法的重写,也叫做方法的覆盖,或者复写
方法重写的条件:
1,一个类需要重写另一个类中的方法,那么它们一定要有继承关系
2,子类中重写的方法的访问权限修饰符的权限一定要大于等于父类方法的访问权限
3,子类重写的方法的方法名,参数列表,返回值的数据类型必须和父类保持一致
多态:就是指的是一个事物多种形态
方法的多态
方法的重载(发生在本类中)
方法的重写(发生在继承中)
变量的多态(这里主要指对象的多态)
1,向上转型
父类变量 Father f ; 既可以保存父类对象的引用,也可以保存子类对象引用
Father (父类) Son(子类)
Father f ;
Son s = new Son();
f = s ;
注意:当对象发生向上转型时,只会保留父类中可以被继承的方法和变量,子类重写的方法会保留
2,向下转型
子类变量可以存储子类对象的引用,也可以存储父类对象的引用
注意:如果需要进行向下转型,则应该先进行向上转型
抽象方法:
当父类中的方法不确定子类应该实现什么样的功能时,可以把这个方法声明为抽象方法
抽象方法的声明语法:
[修饰符(public)] abstract void|返回值数据类型 方法名([参数类型 参数名]);
注意:抽象方法必须存在于抽象类中,抽象方法没有方法体
抽象类的声明语法:
[修饰符(public)] abstract class 类名
{
成员变量
成员方法(可以是抽象的,也可以不是抽象的)
代码块
}
抽象类使用注意点:
1,抽象类不能被实例化(不能创建对象, 不能 new)
2,抽象类就是用来被继承的
3,抽象类中可以没有抽象方法,但是抽象方法一定要存在于抽象类中
4,抽象类中可以存在具象方法(有方法体的方法)
5,抽象类的子类必须实现(重写)抽象类中的所有的抽象方法,否则子类就需要声明为抽象类
6,抽象方法被重写的时候,需要去掉关键字abstract,并为方法加上方法体