关于子类继承父类构造器 super问题

您所在的位置:网站首页 子类继承父类super 关于子类继承父类构造器 super问题

关于子类继承父类构造器 super问题

2023-10-24 05:57| 来源: 网络整理| 查看: 265

当子类想继承父类时,父类必须有无参的构造方法,如果不主动添加系统会默认添加一个无参的构造方法,此时子类可以顺利继承父类 但是当父类添加了一个带参的构造方法时,此时系统将不会再默认添加无参的构造方法,所以此时必须自己手动添加一个无参的构造方法,这样才能保证被子类顺利的继承

在实例化子类的时候会自动的实例化父类,如果此时的父类还继承了其他的类,那么便会逐级的向上查询,知道找到顶级的父类,然后开始逐个的实例化,在实例化的同时

便会自动调用无参的构造方法,但是如果想要调用父类的带参的构造方法,此时就必须通过super(i)进行调用

public class Father { //年龄 private int age; //仅有一个带参数的构造方法 public Father (int i){ this.age = i; System.out.println("实例化父类 ag = " + age); } public Father() { System.out.println("这是父类的无参的构造方法"); // TODO Auto-generated constructor stub } //main方法 public static void main (String [] args) { //实例化对象时必须指定参数以运行对应的构造方法实例(构造)对象 Father fa = new Father(40); Father fa1 = new Father(50); Father fa2 =new Father(); } } 实例化父类 ag = 40 实例化父类 ag = 50 这是父类的无参的构造方法 public class Son extends Father{ private int age; //子类构造方法——必须先显式调用父类构造方法 public Son(int i) { super(i);//必须先调用父类的构造方法,然后才能写子类构造方法的其他逻辑 可以注释掉这句看运行结果 this.age = i - 20; System.out.println("实例化子类 age = " + age); } public Son() { super(); //可以注释掉这句然后看运行结果 System.out.println("这是子类的无参构造方法"); } //main方法 public static void main (String [] args) { //实例化子类Son Son so = new Son(40); Son so1 = new Son(50); Son so2 =new Son(); } } 实例化父类 ag = 40 实例化子类 age = 20 实例化父类 ag = 50 实例化子类 age = 30 这是父类的无参的构造方法

转载自https://blog.csdn.net/lzh_86/article/details/78187379



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3