Heim >Java >javaLernprogramm >Was ist der Unterschied zwischen dynamischem und statischem Polymorphismus in Java?

Was ist der Unterschied zwischen dynamischem und statischem Polymorphismus in Java?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-30 11:15:20843Durchsuche

What is the difference between dynamic and static polymorphism in Java?

Dynamischen und statischen Polymorphismus in Java verstehen

Polymorphismus in Java ermöglicht es Objekten verschiedener Klassen, sich trotz ihrer Unterschiede auf ähnliche Weise zu verhalten. Diese Flexibilität wird durch zwei Arten von Polymorphismus erreicht: dynamisch und statisch.

Dynamischer Polymorphismus
Dynamischer Polymorphismus, auch Laufzeitpolymorphismus genannt, tritt auf, wenn eine Methodenüberschreibung in Unterklassen stattfindet. Der Aufruf der überschreibenden Methode wird zur Laufzeit basierend auf dem tatsächlichen Objekttyp aufgelöst.

Betrachten Sie das folgende Beispiel:

<code class="java">class Animal {
    public void move() {
        System.out.println("Animals can move");
    }
}

class Dog extends Animal {
    @Override
    public void move() {
        System.out.println("Dogs can walk and run");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal animal = new Animal(); // Animal reference and object
        Animal dog = new Dog(); // Animal reference but Dog object

        animal.move(); // Output: Animals can move
        dog.move(); // Output: Dogs can walk and run
    }
}</code>

In diesem Beispiel wird die Methode move() im überschrieben Hundeklasse. Wenn die Tierreferenz die Methode move() aufruft, bestimmt der tatsächliche Typ des Objekts (Tier oder Hund) das Verhalten zur Laufzeit. Dies ist dynamischer Polymorphismus.

Statischer Polymorphismus (Methodenüberladung)
Statischer Polymorphismus, auch Polymorphismus zur Kompilierungszeit genannt, tritt auf, wenn mehrere Methoden mit demselben Namen, aber unterschiedlichen Parameterlisten darin vorhanden sind die gleiche Klasse. Der Aufruf der richtigen Methode wird zur Kompilierungszeit basierend auf der Anzahl und den Typen der übergebenen Argumente bestimmt.

Betrachten Sie das folgende Beispiel:

<code class="java">class Calculation {
    void sum(int a, int b) {
        System.out.println(a + b);
    }

    void sum(int a, int b, int c) {
        System.out.println(a + b + c);
    }

    public static void main(String[] args) {
        Calculation calculation = new Calculation();
        calculation.sum(10, 10, 10); // Output: 30
        calculation.sum(20, 20); // Output: 40
    }
}</code>

In diesem Beispiel ist sum() Die Methode ist mit verschiedenen Parameterlisten überladen. Der Aufruf der richtigen sum()-Methode wird zur Kompilierzeit anhand der Anzahl der übergebenen Argumente bestimmt. Dies ist statischer Polymorphismus oder Methodenüberladung.

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen dynamischem und statischem Polymorphismus in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn