关于方法覆写的问题,大神请进
class Person{
private void print(){
System.out.println("Person -> void print()") ;
}
public void fun(){
this.print() ;
}
}
class Student extends Person{
void print(){
System.out.println("Student -> public void print()") ;
}
}
public class OverrideDemo02{
public static void main(String args[]){
new Student().fun() ;
}
}
运行结果为:
Person -> void print() 请教下为什么。
qq_慕尼黑7072541
浏览 1402回答 2
2回答
-
朕日理万机
你这不是重写,因为重写不能改写private方法。父类的private print方法在子类中是看不到的,但它却存在于子类的数据空间中。子类Student又重新定义了一个自己的print方法而已。你把父类的print方法前的private去掉,就变成真正的重写了,结果也会变成Student -> public void print()
-
ziom
楼上说的对