super调用属性的问题

super调用属性的问题

使用super关键字对父类属性赋值时,需要添加父类的无参构造方法,那么使用super调用父类属性的时候,需要添加无参构造方法吗?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕小班 2019-10-30 17:50:49

同学你好,1、在一个java类中如果没有写构造方法,JVM(Java虚拟机)会默认添加一个无参构造方法。

    2、Java的规定:子类继承父类,子类的构造方法必须调用super(),即父类的构造方法,而且必须放在构造方法的第一行。

    3、在子类Son中,如果没有添加构造方法,JVM(Java虚拟机)会默认添加一个无参构造方法,在这个默认添加的构造方法中,会在第一行有一句super();     来调用父类的无参构造。

   所以此时,在Son类中的无参构造会默认调用父类中的无参构造的方法,而父类中如果没有,就会报错了。建议在所有类中添加无参构造,这是一个好的编码习惯。

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~

好帮手慕小班 2019-10-30 16:54:33

同学你好,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;//直接调用父类中的属性
	}
}

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~

  • 提问者 一只大猪蹄 #1
    为什么使用子类使用super关键字对父类赋值,需要添加父类的无参构造方法呢?
    2019-10-30 17:02:48
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师