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

私有步骤重载, thinking in java

2012-10-26 
私有方法重载, thinking in java//: c07:PrivateOverride.java// Abstract classes and methods.import co

私有方法重载, thinking in java
//: c07:PrivateOverride.java

// Abstract classes and methods.

import com.bruceeckel.simpletest.*;

public class PrivateOverride {

private static Test monitor = new Test();

private void f() {

System.out.println("private f()");

}

public static void main(String[] args) {

PrivateOverride po = new Derived();

po.f();

monitor.expect(new String[] {

"private f()"

});

}

}

class Derived extends PrivateOverride {

public void f() {

System.out.println("public f()");

}

} ///:~

我们所期望的输出是“public f( )”,但是由于private方法被自动认为就是final方法,而且对导出类是屏蔽的。因此,在这种情况下,Derived类中的f( ) 方法就是一个全新的方法;既然基类中f( ) 方法在子类Derived中不可见,因此也就没有被重载。

结论就是:只有非private方法才可以被重载;但是我们还需要密切注意重载private方法的现象,虽然编译不会出错,但是不会按照我们所期望的来执行。明白地说,在导出类中,对于基类中的private方法,我们最好用一个不同的名字。

热点排行