簡體   English   中英

函數重載是通過 Java 中的運行時多態實現的。 Java 還支持運算符重載嗎?

[英]Is function overloading achieved through run-time polymorphism in Java. Also is operator overloading supported by Java?

一般語言中的函數重載是通過運行時多態來實現的,但是Java中的情況正好相反嗎? 因為 Oracle 文檔說除非函數被聲明為靜態,否則它會在運行時加載。 那么如果一個函數在編譯時沒有加載,那么重載怎么會發生呢?

在函數重載的情況下,它是靜態(編譯時)多態性,因為編譯器根據參數的數量和類型知道要調用哪個方法。 例如:

public class FunctionOverloadingTest {
    public void display(String first) {
        System.out.println("I have one parameter");
    }

    public void display(String first, String second) {
        System.out.println("I have two parameters");
    }

    public static void main(String[] args) {
        FunctionOverloadingTest functionOverloadingTest= new FunctionOverloadingTest();
        functionOverloadingTest.display("one");
    }
}

在這種情況下,編譯器根據函數調用中傳遞的參數數量決定調用哪個顯示方法

不。方法重載是編譯時多態性。

簡單來說,我們可以說一個類可以有多個具有相同名稱但具有不同數量的參數或不同類型的參數或兩者兼有的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM