Java _继承
1、继承关系
基于某个父类对对象的定义加以新的拓展,而产生新的子类定义,子类可以继承父类原来的某些
定义,也可以增加父类没有的定义,或者颠覆父类的某些特性;
在java中,存在多个类时,使用:“extends”关键字来表示子类与父类的关系;
语法格式:在定义子类是定义继承自哪个父类
public class 子类名 extends 父类名(){
//自己特有的状态的行为
}
在Java中,只允许单继承,不允许多继承;只能有一个直接的父类;但是可以有多重继承;
在Java中,除了object类之外,每一个类都有直接父类;object要么是一个类的直接父类,要么
是一个类的间接父类;
继承关系的作用:
1):解决代码的重复问题
2):真正的作用:表示出一个体系
继承的条件:
1):父类中的成员使用public修饰的;子类继承;
2):父类中的成员使用protected修饰的,即使不在同一个包中,也会继承;
3):如故父类子类在同一个包中,此时子类可以继承父类中缺省修饰符修饰的成员;
4):如果父类成员使用private修饰,子类无法继承;
5):父类的构造器,子类无法继承;
方法的覆盖:
当子类继承到父类的方法不需要时,可以在子类中定义一个与父类方法名相同的方法,覆盖
掉父类的方法;
遵循的原则:
1):方法的签名相同(方法签名 = 方法名 + 方法的参数列表)
2):子类方法的返回类型和父类方法的返回类型相同或者是其子类(即更详细的类型);
3):子类方法声明抛出的异常要和父类相同或者是其子类;
4):子类方法的访问权限必须必父类更大或者相同;(privite修饰的方法不能继承也就不存在覆盖)
在子类覆盖方法前面加上 @override 可以检查其下一个方法是否是覆盖方法,不是则会报错;
2、方法重载与方法覆盖的区别
方法重载:Ovelode
方法覆盖:Override
名字很像,没有关系;
方法重载:解决了同一个类中,方法作用相同名称不同的问题;(两同一不同:在同一个类中方
法名相同,传参列表不同)
方法覆盖:解决子类继承父类之后,可能父类中的某个方法不符合子类中的某个特征,此时子类
需要在子类中重新定义该方法,重写方法体;(一同两小一大:方法签名相同;返回类型和抛出
的异常相同或者更详细;访问权限相同或更大)
3、super关键字
在子类的某一个方法中,调用被覆盖的父类方法;
super:当前对象的父类对象;
this:当前对象,谁调用this,this就是哪一个对象;