Java 中的覆蓋@Override註解 寫與不寫的一點點理解
阿新 • • 發佈:2019-01-03
Java程式碼
- /*俺的菜鳥筆記
- Java 中的覆蓋@Override註解 寫與不寫的一點點理解
- 一般來說,寫與不寫沒什麼區別,JVM可以自識別
- 寫的情況下:即說明子類要覆蓋基類的方法,基類必須存在方法
- (控制型別public,protected,返回值,引數列表型別)與子類方法完成一致的方法,否則會報錯(找不到被Override的方法)。
- 在不寫@Override註解的情況下,當基類存在與子類各種條件都符合的方法是即實現覆蓋;
- 如果條件不符合時,則是當成新定義的方法使用。
- 所以如果想覆蓋基類方法時,最好還是寫上@Override註解,這樣有利於編譯器幫助檢查錯誤
- */
- //示例:
- public class OverrideTest extends Test{
- @Override//此處寫與不寫都能覆蓋基類的t(String)方法
- public void t(String s){
- System.out.println("OverrideTest.t(String):" + s);
- }
- //此處不能寫@Override註解,因為方法引數型別與基類的t2方法的引數型別不同
- //所以此處只能新定義了一個t2(float)方法,並不能實現覆蓋
- public void t2(float f){
- System.out.println("OverrideTest.t2(float):"
- }
- public static void main(String[] args){
- OverrideTest ot = new OverrideTest();
- ot.t("china34420");
- ot.t2(1.0f);
- ot.t2(1);
- ot.t3();
- }
- }
- /*輸出:
- OverrideTest.t(String):china34420
- OverrideTest.t2(float):1.0
- Test.t2(int):1
- OverrideTest.t(String):override
- */
- class Test{
- public void t(String s){
- System.out.println("Test.t(String):" + s);
- }
- public void t2(int i){
- System.out.println("Test.t2(int):" + i);
- }
- public void t3(){
- t("override");
- }
- }