继承后,先调用父类的构造
当子类创建对象时候,是会先调用父类当中的构造,会从最终的父类一直调用到子类当中
同理,对于代码块,也是会先调用父类的,再调用子类的
public class Animal {
int a;
Animal (int a){ //看到这里要想到,此时有参构造已经代替了默认的无参构造,并且该构造方法只能在本包中的类类名创建对象
this.a = a;
System.out.println("Animal类的有参构造");
}
}
class Bird extends Animal{
int b;
Bird(int b,int a){
super(a);
this.b = b;
System.out.println("Bird extends Animal类 , Bird 是有参构造");
}
/**
* 看不懂子类中所以父类当中的属性可以看:子类构造中有使用父类属性博客
*/
/**再比如
* B(int a,double b){
* super(a);
* x = b;
*
* 把super(a) ,int a 带入变成super(int a)这个就有点类似于构造方法,
* 只不过构造方法的名字是类名,这里是在子类中调用了父类的构造方法,把名字改为了super而已
*/
}
class Cat extends Bird{
int c;
Cat(int c,int a,int b){
super(a,b);
this.c =c;
System.out.println("Cat extends Bird类 , Cat 是有参构造");
}
}
public class Te {
public static void main(String[] args) {
Cat cat = new Cat(1,2,3);
System.out.println("cat的值是:"+cat.a+"--"+cat.b+"--"+cat.c);
}
}
Animal类的有参构造
Bird extends Animal类 , Bird 是有参构造
Cat extends Bird类 , Cat 是有参构造
cat的值是:3--2--1
Process finished with exit code 0