Java实例属性覆写问题

举报
彭世瑜 发表于 2021/08/13 23:53:37 2021/08/13
【摘要】 先看一段Python代码 实现效果是子类和父类共用一个 sayHello() 方法,通过覆写属性name 输出不同的属性 class Parent(): name = "parent" def getName(self): return self.name def sayHello(self): print(self.name, "-", self.getName(...

先看一段Python代码

实现效果是子类和父类共用一个 sayHello() 方法,通过覆写属性name 输出不同的属性

class Parent(): name = "parent" def getName(self): return self.name def sayHello(self): print(self.name, "-", self.getName())


class Child(Parent): name = "child"


if __name__ == "__main__": parent = Parent() print(parent.getName()) parent.sayHello() child = Child() print(child.getName()) child.sayHello()

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

输出效果满足预期要求

parent
parent - parent
child
child - child

  
 
  • 1
  • 2
  • 3
  • 4

再来看Java代码

class Parent { private String name = "parent"; public String getName() { return name; } public void sayHello() { System.out.println(name + " - " + getName()); }
}

class Child extends Parent { private String name = "child";
}

public class Demo { public static void main(String[] args) { Parent parent = new Parent(); System.out.println(parent.getName()); parent.sayHello(); Child child = new Child(); System.out.println(child.getName()); child.sayHello(); }
}


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

输出结果和预期不一样

parent
parent - parent
parent
parent - parent

  
 
  • 1
  • 2
  • 3
  • 4

修改一下子类,覆写父类的getName()方法

class Parent { private String name = "parent"; public String getName() { return name; } public void sayHello() { System.out.println(name + " - " + getName()); }
}

class Child extends Parent { private String name = "child"; // 增加方法覆写 @Override public String getName() { return name; }
}

public class Demo { public static void main(String[] args) { Parent parent = new Parent(); System.out.println(parent.getName()); parent.sayHello(); Child child = new Child(); System.out.println(child.getName()); child.sayHello(); }
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

输出结果看到,通过覆写方法获取属性的方式可以获取子类属性,直接获取的属性还是父类中的属性

parent
parent - parent
child
parent - child

  
 
  • 1
  • 2
  • 3
  • 4

文章来源: pengshiyu.blog.csdn.net,作者:彭世瑜,版权归原作者所有,如需转载,请联系作者。

原文链接:pengshiyu.blog.csdn.net/article/details/107221665

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。