这是我课本上的练习题。它打印:
人物 人物
我想知道为什么它不会打印人和学生。难道不应该对getInfo实例进行重载,并打印学生吗?我一定是误会推翻了。
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());
}
}发布于 2015-12-21 21:44:47
在您提供的示例中,函数getinfo()不会被重写,因为您已经将该函数声明为private。private函数或变量只能在该特定类中访问或可见。
因此,当getinfo()在超类中被调用时,它会转到自己的getinfo(),而不是学生的getinfo()。
在这种情况下,即使函数不是私有函数,它也不会调用学生的getinfo(),因为您没有使用simply对象来调用it.You只是调用函数。
你能做什么?
private替换为protected。这将保持该功能的隐秘性,也将使其可在世袭成员中使用。然后一个小小的改变:
System.out.println(this.getinfo());https://stackoverflow.com/questions/34404596
复制相似问题