继承
1.什么是继承?
(1)用来提高代码的复用性
(2)将相同的功能模块封装到方法中需要使用时调用方法达到代码复用的目的
(3)通过继承将多个类中的相同的类容摘取出来,变成一个新类,让其他类和当前的新类产生关系,达到代码复用性的目的
2.怎么样才能继承?
使用关键字extends,如下所示,B继承A, A是B的父类,B是A的子类。当一个类不显示的继承其它类时,默认继承Object类,Object是所有的父类。在java中只有直接父类和间接父类关系,没有兄弟关系,爷孙关系。
3.权限修饰符总结
凡是打算为子类继承的成员和方法,用protected修饰;
不打算被包外的类引用的成员和方法,不用写任何修饰符;
4.继承关系中的构造方法
Java中是单继承,即只有一个父类;
JVM对于有继承关系的类的构造方法先从当前类开始,根据继承关系,追溯到最开始的祖先类,然后再沿着继承关系向下,逐个执行构造方法;
5.super()
super:代表当前对象父类的引用
super.成员变量 调用父类的成员变量
super(…) 调用父类的构造方法
无论子类执行的构造方法是无参还是带参的,在默认情况下,JVM只调用父类的无参构造方法
用super()非常明确指明父类的具体哪一种构造方法时,就不是默认情况
使用super()需注意:
1.只能出现在构造方法中;
2.如果有super(),必须是构造方法中的第一条语句
6.方法的覆盖
父类与子类的多态性,对父类的函数进行重新定义。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写。在java中,子类可继承父类的方法,则不需要重新编写相同的方法。但有时子类并不想原封不动继承父类的方法,而是想做一定的修改,这就采用方法重写。方法重写又称方法覆盖
覆盖的语法和规则
1、方法的覆盖只存在于有继承关系的类之间
2、子类方法名称,参数个数和类型,必须与被覆盖的父类方法一致
3、第二条成立,子类方法返回值必须与被覆盖的父类方法一致
4、第二条成立,子类方法的修饰符不能 低于 被覆盖的父类的分类方法
5、不符合第二条,实质上 实现了方法的重载,而非覆盖