Corsair

My javaWorld
数据加载中……
关于名称屏蔽讨论
关于超类方法重载,子类无法覆盖其中的任意一个方法。
public class SuperClass 
public void method()
System.out.println(
"super method() worked."); 
}
 
public void method(int a)
System.out.println(
"super method(int) worked"); 
}
 
public void method(String s)
System.out.println(
"super method(string) worked"); 
}
 
}
 
//------------sub--------------- 
public class SubClass extends SuperClass 
  
public void method()
  System.out.println(
"subclass method() worked"); 
  }
 
  
public void method(int a)
  
super.method(a); 
  }
 
  
public void method(char c)
  System.out.println(
"subclass method(char) worked"); 
  }
 
}
 
//------------run--------------- 
public class Test 
public static void run(SuperClass a)
a.method(); 
a.method(
1); 
a.method(
"string"); 
}
 
public static void main(String[] args) 
run(
new SubClass()); 
new SubClass().method('r'); 
}
 
}
 
//=============END=============== 
subclass method() worked 
super method(int) worked 
super method(string) worked 
subclass method(
char) worked 
//=============END=============== 

posted on 2007-03-31 10:53 银河海盗 阅读(295) 评论(1)  编辑  收藏 所属分类: JAVA

评论

# re: 关于名称屏蔽讨论 2008-11-13 11:42 http://hi.baidu.com/lovexdd/

名称屏蔽:

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

ss解析:

这句话的意思是指:如果基类有方法 void method() String method(int i)

那么在导出类中定义 int method(char a) 并不会吧基类的方法给屏蔽,基类的重载方法是可以用的。

导出类同样可以重载。
  回复  更多评论    

只有注册用户登录后才能发表评论。


网站导航: