继承情况下构造方法的调用过程-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;
}
@Override
public 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());
}
}
执行代码如下: