最近在学习到Java的继承和多态时遇到了这样的一个问题:关于继承链中子类对父类的私有方法是否可以覆盖的问题,在此记录一下自己对这个问题解决以后的一些心得。
首先要明确:子类是不能够覆盖(重写)父类的私有方法的。比较直观的理由是,子类要能够重写父类的方法的前提条件是继承,子类对父类的私有方法并不继承,也没有访问权限,自然也是不能重写的。接下来看一个例子:
[java] view plaincopy
public class Test {
public static void main(String[] args) {
new A().printPerson();
new B().printPerson();
}
}
class A {
public void printPerson() {
System.out.println(getInfo());
}
private String getInfo() {
return "A";
}
}
class B extends A{
public String getInfo() {
return "B";
}
}
运行结果是 A A。如果将private修饰词去掉,换成protected和public修饰,运行结果是A B这是毫无疑问的,因为那正是B重写了父类A的getInfo方法;而加