天天看點

java 注解 override_Java @Override注解

覆寫(Overriding)是程式設計語言中非常流行的概念。Java中的方法覆寫是在超類和子類中存在相同方法的情況。它是在Java中實作運作時多态性的面向對象概念之一。

Java覆寫

下面來看看如何覆寫java中的方法。

public class BaseClass {

public void doSomething(String str){

System.out.println("Base impl:"+str);

}

}

下面,我們将建立一個子類,重寫BaseClass類中的doSomething方法。

public class ChildClass extends BaseClass{

public void doSomething(String str){

System.out.println("Child impl:"+str);

}

}

建立一個測試類來看看java中的重寫是如何工作的。

public class OverrideTest {

public static void main(String[] args) {

BaseClass bc = new ChildClass();

bc.doSomething("Via Yiibai");

}

}

執行上面示例代碼,得到以下結果 -

Child impl: Via Yiibai

2. Java重寫是如何工作的?方法簽名在超類和子類中必須完全相同。

建立執行個體時,必須使用子類構造函數。

在編譯時,變量引用超類。但是在運作時,它引用子類對象。

在變量上調用該方法時,看起來将調用超類方法。但是該方法存在于子類對象中,是以它被調用。

這裡bc的類型是BaseClass,但在運作時,它是ChildClass的對象。是以,當調用doSomething(String str)方法時,它會在ChildClass中查找方法,進而查找輸出。

Java重寫是否可以使用不同的方法簽名?

下面改變BaseClass類中的doSomething方法。

//Change argument from String to Object

public void doSomething(Object str){

System.out.println("Base impl:"+str);

}

編譯器不會抛出任何警告/錯誤,現在如果運作測試程式輸出将是 -

Base impl:Via Yiibai

原因是ChildClass不再覆寫BaseClass類的doSomething(Object str)方法。是以它調用了BaseClass實作。在這種情況下,ChildClass重載了doSomething()方法,因為方法名稱相同但方法簽名不同。

3. Java @Override注解

Java 1.5引入了注解。Java

如果取消注釋ChildClass中的

java 注解 override_Java @Override注解

Java @Override注解的優點

Java

覆寫與重載的差別

編号

覆寫

重載

1

覆寫發生在超類和子類之間

重載存在于同一個類中

2

方法簽名在超類和子類中必須相同。

方法名稱必須相同,但方法簽名必須不同。

3

調用方法的辨別在運作時發生

可以辨別方法在編譯時調用。

4

如果重寫中斷,它可能會産生負面影響,因為程式将編譯并運作。但是,将調用來自超類的方法而不是子類。

如果更改方法名稱以中斷重載,則錯誤将在編譯時發生。是以它很容易修複并且不會造成太大的傷害。

5

覆寫也稱為運作時多态。

重載稱為編譯時多态。

¥ 我要打賞

糾錯/補充

收藏

加QQ群啦,易百教程官方技術學習群

注意:建議每個人選自己的技術方向加群,同一個QQ最多限加 3 個群。