猿问

关于方法覆写的问题,大神请进

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

楼上说的对
随时随地看视频慕课网APP

相关分类

Java
我要回答