下面代码中B继承了A,在new B对象时,首先执行A的无参构造,不管是new B的有参还是无参。
使用无参构造方法new B时,会执行B的无参构造方法;使用有参构造new B对象时,会执行B的有参构造方法
public class TestConstruct { public static void main(String[] args) { B b = new B(); b.setAge("qwe"); b.setName("asdf"); } } class A{ String name; public String getName() { return name; } public void setName(String name) { this.name = name; } public void a(){ System.out.println("我是A"); } public A(String name){ System.out.println("我是A的有参构造"); this.name=name; } public A(){ System.out.println("我是 a 的无参构造"); } } class B extends A{ String age; public String getAge() { return age; } public void setAge(String age) { this.age = age; } public void b(){ System.out.println("我是B"); } public B(String age){ System.out.println("我是B的有参构造"); this.age=age; } public B(){ System.out.println("我是b 的无参构造"); } }
控制台打印为:
我是 a 的无参构造
我是b 的无参构造