java继承时候类的运行顺序问题
子类在继承父类后,创建子类对象会首先调用父类的构造函数,先运行父类的构造函数,然后再运行子类的构造函数,例如以下所看到的:
class Father{ public Father(){ System.out.println("I am father"); } } public class Child extends Father{ public Child(){ System.out.println("I am child"); } public static void main(String[] args) { Father f=new Father(); Child c=new Child(); } }
当父类有带參数的构造函数时,子类默认是调用不带參数的构造函数,例如以下所看到的:
class Father{ public Father(){ System.out.println("I am father"); } public Father(String name){ System.out.println("I am father,My name is "+name); } } public class Child extends Father{ public Child(){ System.out.println("I am child"); } public static void main(String[] args) { Father f=new Father("Apache"); Child c=new Child(); } }
若想子类调用父类带參数的构造函数,须要用super()函数申明,例如以下:
class Father{ public Father(){ System.out.println("I am father"); } public Father(String name){ System.out.println("I am father,My name is "+name); } } public class Child extends Father{ public Child(){ super("Apache"); System.out.println("I am child"); } public static void main(String[] args) { Father f=new Father("Apache"); Child c=new Child(); } }