java 子类属性覆盖_java子类和父类属性重复问题

java 子类继承 父类, 但子类中 包含和父类相同 属性 ,给子类赋值之后,父类的相同的属性值还是空的。

类定义如下:

public class Person {

private String name;

private String age;

// ignore getter and setter

}

public class Student extends Person {

private String name;

private String score;

// ignore getter and setter

}

public static void main(String[] args){

Student stu = new Student();

stu.setAge("12");

stu.setName("test");

}

debug看到

a7748842bd41590ea920778ca1542707.png

父类(Person)的name属性值是null,继承的方法是子类会覆盖掉父类相同的方法,但是这属性为什么没覆盖

父类的属性被私有了,子类也重写了父类的方法,重写方法的时候也没去调用父类的方法,所以造成了父类属性值为空。

都是private的啊!

相同成员变量不会覆盖,http://blog.csdn.net/iwaich/article/details/9126661

变量没有重写这一说

变量是局部变量,你定义成public也不是同一个变量啊。这是两个家庭,恰好有一个孩子名字相同,但本质上是两个不同的变量。

建议贴出setter方法体 如果使用了 super关键字 再讨论这个问题比较好

可以在Student里编一个方法a(),在方法里用super调用Person类里方法,然后再在main方法里调用该a()方法,应该可行

这个问题已经解决了。

我只是指出题主在题目描述中的一点不准确的地方:

父类(Person)的name属性值是null,继承的方法是子类会覆盖掉父类相同的方法,但是这属性为什么没覆盖。

其实,根据我的理解:“子类属性对父类同名属性的作用”与“子类方法对父类同名方法的作用”是相同的。

其实,所谓子类”覆盖了“父类同名方法,其实并没有真地覆盖,父类方法还在那里。只不过你在debug根据里看不到而已。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值