关于一个同学提问的[子类的无参构造中可以调用父类的有参构造吗]这个问题
我尝试了一下有些情况应该是可以调用的,比如
当super中传递的参数是常量时
当super中传递的参数是子类有权限访问的父类的静态成员属性时
当super中传递的参数是子类的静态成员属性时
自己走断点看了一下执行顺序,是先找到了子类的无参构造,如果子类无参构造没有super,会找到并执行父类无参构造,再回到子类无参构造执行里面的语句;如果子类无参构造中有super,则会找到并执行super调用的父类构造方法,然后再回到子类无参构造继续从super语句后往下执行...
但是具体的细节还有点晕_(¦3」∠)_
我的理解应该是在super调用时,静态成员在类加载时就已经加载了,所以可以访问到
但是根据课上老师分析的子类实例化顺序,是父类的成员先被赋值,然后才执行父类构造方法,这样调用的时候应该是可以访问到父类的非私有普通成员的呀,为什么不行呢
希望老师能指点一下,谢谢~
// 父类Animal
public class Animal {
public static String name;
private int month;
private String species;
//无参构造
public Animal() {
}
//带参构造
public Animal(String name) {
System.out.println(name);
}
}public class Dog extends Animal {
private static int sex;
private static String test;
public Dog() {
// super("1");
// super(name);
// super(test);
System.out.println("hhh");
} }
16
收起
正在回答
1回答
同学你好,
1、子类的无参构造中可以调用父类的有参构造。
2、子类可以访问到父类的非私有普通成员。
例如,在父类中新增非私有普通成员age。
参考代码如下:
在子类中访问父类中的age属性。如下:
相似问题
登录后可查看更多问答,登录/注册
java工程师2020版
- 参与学习 人
- 提交作业 9393 份
- 解答问题 16556 个
综合就业常年第一,编程排行常年霸榜,无需脱产即可学习,北上广深月薪过万 无论你是未就业的学生还是想转行的在职人员,不需要基础,只要你有梦想,想高薪
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星