Java与C++一点不同


名称屏蔽

如果java基类拥有某个已被多次重载的方法名称,那么在导出类中重新定义该方法名称并不会屏蔽其在基类中的任何版本,(这点和C++不同),无论在该层或者它的基类定义方法,重载机制都可以正常工作。

public class Test {

 
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  TT tt=new TT();
  T t=new T();
  t.fun1();
  t.fun1(2);
  tt.fun1();
  tt.fun1(4);
  t=tt;
  t.fun1();
  t.fun1(3);
 }
}
 class T{
  protected T(){
  
  }
  protected void fun1(){
   System.out.println("T Fun1()");
  }
  public void fun1(int i){
   System.out.println("T Fun1(int i)");
  }
 }
 class TT extends T{
  public void fun1(){
   System.out.println("TT fun1()");
  }
 }
结果:

T Fun1()
T Fun1(int i)
TT fun1()
T Fun1(int i)
TT fun1()
T Fun1(int i)

相关内容