继承情况下构造方法的调用过程-java
super关键字:可以看做是直接父类对象的引用。每个子类对象都会有一个super引用
指向其直接父类对象。super可以:1、调用成员变量 super.color
2、调用成员方法 super.show
3、调用构造方法 super(color,age);继承条件下构造方法的执行顺序1、构造放法的第一条语句默认是super();含义是调用父类无参数构造方法2、构造方法的第一条语句可以显式的指定为父类的有参数构造方法:super(...);3、构造方法的第一条语句可以显式的指定为当前类的构造方法:this(...);注意事项1、每个类最好要提供无参数的构造方法2、构造方法的第一条语句可以是通过super或者this调用构造方法,必须是第一条语句3、构造方法中不能同时使用super和this调用构造方法,并不是说不能同时出现this和super
public class Animal {String color;private int age;public Animal(){super();}public Animal(String color,int age){this.color = color;this.age = age;}public int getAge() {return age;}public void setAge(){this.age = age;}
}
/*** 继承情况下构造放法的调用过程*/
public class Dog extends Animal{private String nikeName;private String type;public Dog(){super();//默认第一条语句为super();可以省略不写}public Dog(String color,int age,String nikeName){super(color,age);//调用父类(Animal类)构造方法this.nikeName = nikeName;}public Dog(String color,int age,String nikeName,String type){this(color,age,nikeName);//调用Dog类(本类)含参构造方法this.type = type;}@Overridepublic String toString (){return "[color="+this.color+" "+"age="+this.getAge()+" "+"nikeName="+this.nikeName+" "+"type="+this.type+"]";}public static void main(String[] args) {Dog dog = new Dog("黑色",3,"旺财","金毛");System.out.println(dog.toString());}
}
执行代码如下: