首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >继承实践

继承实践
EN

Stack Overflow用户
提问于 2015-12-21 21:26:48
回答 1查看 151关注 0票数 0

这是我课本上的练习题。它打印:

人物 人物

我想知道为什么它不会打印人和学生。难道不应该对getInfo实例进行重载,并打印学生吗?我一定是误会推翻了。

代码语言:javascript
复制
public class Test {
  public static void main(String[] args) {
    new Person().printPerson();
    new Student().printPerson();
  }
}

class Student extends Person {
  private String getInfo() {
    return "Student";
  }
}

class Person {
  private String getInfo() {
    return "Person";
  }
  
  public void printPerson() {
    System.out.println(getInfo());
  }
}
EN

回答 1

Stack Overflow用户

发布于 2015-12-21 21:44:47

在您提供的示例中,函数getinfo()不会被重写,因为您已经将该函数声明为privateprivate函数或变量只能在该特定类中访问或可见。

因此,当getinfo()在超类中被调用时,它会转到自己的getinfo(),而不是学生的getinfo()

在这种情况下,即使函数不是私有函数,它也不会调用学生的getinfo(),因为您没有使用simply对象来调用it.You只是调用函数。

你能做什么?

  • private替换为protected。这将保持该功能的隐秘性,也将使其可在世袭成员中使用。

然后一个小小的改变:

代码语言:javascript
复制
System.out.println(this.getinfo());
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34404596

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档