有残构造的调用
super关键字:
1.程序希望在子类方法,可以强制访问父类被覆盖的成员方法,访问父类得曾媛变量。
2.可以使用super.来进行,强制指定使用父类的成员变量、调用父类的成员方法。
3.super和this:
- supper总是跟父类相关。supper.表明限定父类,supper()调用父类的构造器
- this总是跟当前类相关。this.表明引用当前类对象,this()调用当前类的构造器
4.父类的构造器不能被继承,只能被调用,子类构造器调用前会先执行父类构造器,如果子类没有显示调用父类构造器,那么系统第一行会自动调用父类默认的无参构造器。
5.当只能调用父类的构造器时候,到底调用哪个构造器时,完全取决于传入的参数值6.supper()的调用必须位于【构造器的第一行】
6.在构造器中,this()和supper是互斥的。具体如下:
父类
package extendstwo;
public class Animall { //父类
// public Animall(){
// System.out.println("我是父類的構造");
// }
public Animall(String blood){ //構造器
this.blood = blood; //从有参构造上的值赋给字段
// System.out.println("我是父類的構造");
}
String blood; //字段(变量)
}
子类
package extendstwo;
public class dogl extends Animall { //子类
// public dogl(){
// }
public dogl(String blood){ //有参构造
// super.blood = blood; //直接获取父类字段
// super(); //获取父类无参构造
super(blood); //获取父类有参构造
}
}
测试类
package extendstwo;
public class test {
public static void main(String[] args) {
dogl dogs = new dogl("red"); //创建对象
System.out.println(dogs.blood); //输出调用的有参构造
}
}
具体走向图: