首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Java中的override有关问题

2012-12-23 
Java中的override问题有这样一个例子:?public class PrivateOverride {private void f() { System.out.pri

Java中的override问题

有这样一个例子:

?

public class PrivateOverride {    private void f() { System.out.println("private f()"); }    public static main(String[] args) {        PrivateOverride po = new Derived();        po.f();    }}class Derived extends PrivateOverride {    public void f() { System.out.println("public f()"); } }

?

输出结果为private f()

解答:如果基类中的f方法不是private,那么 po.f();应该调用的是子类的f方法;
但是如果基类的f方法为private,那么该方法对于子类来说是不可见的,所以子类的f方法并不是重写了基类的f方法,而是另一个f方法,只不过和基类的 f名字相同,因为他不知道基类有f方法,所以基类也不知道子类有f方法,所以在 po.f();时,就会认为子类没有f方法,所以就调用的基类的f方法。

热点排行