本帖最后由 王志明 于 2012-7-27 02:39 编辑
楼主你理解错了,不要被运行结果的表象骗到
1. 在你的Student类中并没有覆盖父类中的print方法,因为父类中的print方法是private的,你并没有继承,不能直接访问,你在Student类中写的print方法是Student特有的,所有当你s.print()是,输出--->Student
2.当s调用fun方法的时候,fun方法的定义里面的this确实等同于s,但是在fun方法中调用的是父类的print方法
你可以用下面的代码试试看,当你将Student类中的print方法去掉时,ms中不会出现print
Method[] ms = this.getClass().getDeclaredMethods(); for (Method m : ms) { m.setAccessible(true); System.out.println(m.getName()); } |