Heim > Java > javaLernprogramm > Wann werden Schnittstellen und wann abstrakte Klassen in Java verwendet?

Wann werden Schnittstellen und wann abstrakte Klassen in Java verwendet?

王林
Freigeben: 2024-05-01 12:15:02
Original
764 Leute haben es durchsucht

Wann Schnittstellen verwendet werden: Definieren Sie gemeinsame Funktionen, die von verschiedenen Objekttypen implementiert werden. Definieren Sie Rückrufschnittstellen (z. B. Ereignis-Listener). Implementieren Sie die Mehrfachvererbung. Wann sollten abstrakte Klassen verwendet werden: Definieren Sie allgemeine Funktionen, die durch Vererbung implementiert werden. Implementieren Sie Einzelvererbung und Polymorphismus. Definieren Sie eine geschützte Methode oder ein geschütztes Feld.

Java 中何时使用接口何时使用抽象类

Wann werden Schnittstellen und abstrakte Klassen in Java verwendet?

In Java sind Schnittstellen und abstrakte Klassen abstrakte Konzepte, die zur Definition des Verhaltens von Objekten verwendet werden. Trotz ihrer Ähnlichkeiten gibt es deutliche Unterschiede in ihrem Verwendungszweck.

Schnittstelle

Eine Schnittstelle ist ein Vertrag, der Methodensignaturen enthält (d. h. Methodendeklarationen ohne Implementierung). Es definiert den Satz öffentlicher Methoden, die eine Klasse implementieren muss.

Wann werden Schnittstellen verwendet?

  • Definieren Sie gemeinsame Funktionen, die von verschiedenen Objekttypen gemeinsam genutzt werden können.
  • Wenn Sie eine Rückrufschnittstelle definieren müssen, beispielsweise einen Ereignis-Listener.
  • Wenn Mehrfachvererbung implementiert werden muss (wird in Java nicht unterstützt).
public interface Animal {
    void eat();
    void sleep();
}
Nach dem Login kopieren

Abstrakte Klasse

Eine abstrakte Klasse ist eine teilweise abstrakte Klasse, die eine Kombination aus Methodenimplementierungen und abstrakten Methoden enthält. Abstrakte Klassen können nicht instanziiert werden, können aber von Unterklassen geerbt werden.

Wann sollte man abstrakte Klassen verwenden?

  • Definieren Sie gemeinsame Funktionen, die nur durch Vererbung erreicht werden können.
  • Wenn Sie Einzelvererbung und Polymorphismus implementieren müssen.
  • Wenn Sie geschützte Methoden oder Felder definieren müssen.
public abstract class Mammal {
    public void giveBirth() { ... }
    public abstract void makeSound();
}
Nach dem Login kopieren

Praktischer Fall

Schnittstelle

Erstellen Sie eine Shape-Schnittstelle und definieren Sie öffentliche Methoden zur Berechnung von Fläche und Umfang:

public interface Shape {
    double getArea();
    double getPerimeter();
}
Nach dem Login kopieren

Verwenden Sie diese Schnittstelle, um Rechteck- und Kreisklassen zu erstellen:

public class Rectangle implements Shape {
    // ...
}

public class Circle implements Shape {
    // ...
}
Nach dem Login kopieren

Abstrakte Klasse.

Erstellen Sie eine abstrakte Shape-Klasse und definieren Sie geschützte Methoden zur Berechnung von Fläche und Umfang:

public abstract class Shape {
    protected double area;
    protected double perimeter;

    public abstract double getArea();
    public abstract double getPerimeter();
}
Nach dem Login kopieren

Erstellen Sie Rechteck- und Kreisklassen mit dieser abstrakten Klasse und überschreiben Sie dabei die Methoden getArea() und getPerimeter():

public class Rectangle extends Shape {
    // ...
}

public class Circle extends Shape {
    // ...
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWann werden Schnittstellen und wann abstrakte Klassen in Java verwendet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage