super调用属性的问题
使用super关键字对父类属性赋值时,需要添加父类的无参构造方法,那么使用super调用父类属性的时候,需要添加无参构造方法吗?
正在回答 回答被采纳积分+1
同学你好,1、在一个java类中如果没有写构造方法,JVM(Java虚拟机)会默认添加一个无参构造方法。
2、Java的规定:子类继承父类,子类的构造方法必须调用super(),即父类的构造方法,而且必须放在构造方法的第一行。
3、在子类Son中,如果没有添加构造方法,JVM(Java虚拟机)会默认添加一个无参构造方法,在这个默认添加的构造方法中,会在第一行有一句super(); 来调用父类的无参构造。
所以此时,在Son类中的无参构造会默认调用父类中的无参构造的方法,而父类中如果没有,就会报错了。建议在所有类中添加无参构造,这是一个好的编码习惯。
如果我的回答解决了你的疑惑,请采纳,祝学习愉快~
同学你好,1、使用super调用父类属性,与添加父类无参构造方法并没有直接的关系呐。
2、在一个java类中如果没有写构造方法,JVM(Java虚拟机)会默认添加一个无参构造方法,但是当写了有参构造后,JVM(Java虚拟机)不会再默认添加一个,如果只写了一个带参构造,假如有一个子类继承了它,一般子类的无参构造默认去调用的是父类的无参构造(而此时父类并没有无参构造),这个时候就会报错了。例如:
父类:
public class Father { private String name; //看是否有无参构造对子类的影响 public Father() { } public Father(String name) { super(); this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
子类:
public class Son extends Father{ public void play(){ String n=super.name;//直接调用父类中的属性 } }
如果我的回答解决了你的疑惑,请采纳,祝学习愉快~
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星