Heim  >  Artikel  >  Java  >  Polymorphismusanwendung von Schnittstellen und abstrakten Klassen in Java

Polymorphismusanwendung von Schnittstellen und abstrakten Klassen in Java

PHPz
PHPzOriginal
2024-05-02 10:33:011136Durchsuche

In Java wird Polymorphismus durch Schnittstellen und abstrakte Klassen erreicht. Eine Schnittstelle definiert Methoden, die von der Klasse implementiert werden müssen, die sie implementiert. Eine abstrakte Klasse enthält abstrakte Methoden, die von ihren Unterklassen implementiert werden müssen. Polymorphismus wird erreicht, indem ein Array von Objekten erstellt und dieselbe Methode aufgerufen wird, sodass je nach tatsächlichem Elementtyp unterschiedliche Implementierungen aufgerufen werden können. Sie können beispielsweise eine Shape-Schnittstelle definieren, um die Zeichenmethoden der Shape-Klasse zu definieren, dann mehrere Formklassen (z. B. Kreis, Quadrat, Dreieck) mit unterschiedlichen Implementierungen erstellen und Polymorphismus verwenden, um alle Formen über eine Canvas-Klasse zu zeichnen.

Java 中接口和抽象类的多态性应用

Anwendung von Polymorphismus in Schnittstellen und abstrakten Klassen in Java

Polymorphismus ist ein Schlüsselkonzept in der objektorientierten Programmierung (OOP), das es Objekten ermöglicht, auf denselben Methodenaufruf auf unterschiedliche Weise zu reagieren. In Java kann Polymorphismus durch Schnittstellen und abstrakte Klassen erreicht werden.

Schnittstelle

Eine Schnittstelle definiert eine Reihe von Methoden, die von der Klasse implementiert werden müssen, die sie implementiert. Die Schnittstelle selbst enthält keine Implementierung, sie spezifiziert lediglich den Vertrag.

public interface Shape {
    double getArea();
}

Abstrakte Klasse

Eine abstrakte Klasse ist eine Klasse, die mindestens eine abstrakte Methode hat. Abstrakte Methoden werden nicht implementiert und müssen von ihren Unterklassen implementiert werden. Abstrakte Klassen können konkrete Methoden und Felder enthalten.

public abstract class Animal {
    protected String name;
    
    public abstract void makeSound();
}

Polymorphismus

Mithilfe von Schnittstellen und abstrakten Klassen ist es möglich, Arrays von Objekten zu erstellen, in denen jedes Element einen anderen Typ hat. Wenn dieselbe Methode für diese Elemente aufgerufen wird, wird abhängig vom Typ des tatsächlichen Elements eine andere Implementierung aufgerufen.

Shape[] shapes = { new Circle(), new Square(), new Triangle() };
for (Shape shape : shapes) {
    System.out.println("Area: " + shape.getArea());
}

Praktischer Fall

Stellen Sie sich eine Leinwandklasse vor, die verschiedene Formen zeichnen kann. Formen können über die folgende Schnittstelle definiert werden:

public interface Shape {
    void draw();
}

Anschließend können mehrere Formklassen mit unterschiedlichen Zeichenimplementierungen erstellt werden:

public class Circle implements Shape {
    @Override
    public void draw() { System.out.println("Drawing a circle"); }
}

public class Square implements Shape {
    @Override
    public void draw() { System.out.println("Drawing a square"); }
}

public class Triangle implements Shape {
    @Override
    public void draw() { System.out.println("Drawing a triangle"); }
}

Die Canvas-Klasse kann ein Array von Shape-Objekten akzeptieren und Polymorphismus verwenden, um alle Formen zu zeichnen:

public class Canvas {
    public void drawAll(Shape[] shapes) {
        for (Shape shape : shapes) {
            shape.draw();
        }
    }
}

Über die Schnittstelle und abstrakte Klassen ermöglicht Polymorphismus in Java den dynamischen Aufruf von Methoden basierend auf dem tatsächlichen Typ des Objekts und ermöglicht so skalierbaren und wiederverwendbaren Code.

Das obige ist der detaillierte Inhalt vonPolymorphismusanwendung von Schnittstellen und abstrakten Klassen 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