Heim >Java >javaLernprogramm >Was ist der Unterschied zwischen dynamischem und statischem Polymorphismus 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!