1.继承 inheritence
Java是单继承的,一个类只能从另一个类继承。
被继承的类叫父类、基类(base class)。
继承的类叫子类。
使用extends关键字
public class Child extends Parent-----------------------------|2、发现这个类继承了Parent,所以先去执行Parent这个类中的不带参数的构造方法
{ | |
public Child() | |
{ | |
System.out.println("child"); | |
} | |
public static void main(String[] args) | |
{ | |
Child child = new Child();--------------------1、执行Child这个类中,不带参数的构造方法 |
} |
} |
class Parent |
{ |
public Parent()----------------------------------------------------------------------------------------------------------------------------|3、
{
System.out.println("parent");
}
}
2.当生成子类对象时,java默认首先调用父类的不带参数的构造方法,然后执行该构造方法,生成父类对象,接下来再去调用子类的构造方法,生成子类对象。
即:Java 默认提供了一个机制,就是寻找父类不带参数的构造方法
要想生成子类对象,需要先生成父类对象,没有父类对象就没有子类对象
但是如果不想在父类重写不带参数的构造方法,可以使用关键字super,来改变这个机制
eg. super(1)-----------------------------显式的告诉Java,要调用父类中接收整型参数的构造方法
3.super
super表示对父类对象的引用。
如果子类使用super()显式调用父类的某个构造方法,那么在执行的时候,就会寻找与super()所对应的构造方法而不会再去寻找父类的不带参数的构造方法
与this一样,super也必须作为构造方法的第一条执行语句
4.关于继承的3点
(1)父类有的,子类也有
(2)父类没有的,子类可以增加
(3)父类有的,子类可以改变
5.关于继承的注意事项
(1)构造方法不能被继承(子类的构造方法就是子类的,父类的构造方法就是父类的)(2)方法和属性可以被继承
(3)子类的构造方法隐式的调用父类不带参数的构造方法
(4)当父类没有不带参数的构造方法时,子类需要使用super来显示的调用父类的构造方法。super指对父类的引用
(5)super关键字必须是构造方法中的第一行语句
6.重写(覆写)——对方法的继承,子类把父类的方法覆盖掉
重写是子类与父类的方法返回类型一样、方法名称一样、参数一样,这样就说子类与父类的方法构成了重写关系7.方法重载与方法重写之间的关系:
重载发生在同一个类内部的两个或多个方法
重写发生在父类和子类之间。重写一定伴随着继承发生
8.当两个方法形成重写关系时,可以在子类方法中通过super.run()形式调用父类的run()方法,其中super.run()不必放在第一行语句,因为此时父类对象已经构造完毕,先调用父类的run()方法还是先调用子类的run()方法,是根据程序逻辑决定的
9.在定义一个类的时候,如果没有显示指定该类的父类,那么该类就会继承于java.lang.object类(JDK提供的一个类,object类是Java中所有类的直接或间接父类)