Heim  >  Artikel  >  Java  >  Die Verwendung und der Unterschied zwischen Schnittstellen und abstrakten Klassen in Java

Die Verwendung und der Unterschied zwischen Schnittstellen und abstrakten Klassen in Java

WBOY
WBOYOriginal
2024-05-01 09:42:01494Durchsuche

Schnittstellen und abstrakte Klassen werden verwendet, um Verhaltensverträge zu definieren. Schnittstellen definieren Methodensignaturen, während abstrakte Klassen Methodendeklarationen und -implementierungen enthalten. Schnittstellen können nicht instanziiert werden, abstrakte Klassen jedoch schon. Methoden in Schnittstellen verwenden standardmäßig die öffentliche Abstraktion, während Methoden in abstrakten Klassen standardmäßig die geschützte Abstraktion verwenden. Schnittstellen werden zum Definieren allgemeiner APIs verwendet, während abstrakte Klassen zum Erstellen von Basisklassen und zum Bereitstellen grundlegender Verhaltensweisen verwendet werden.

Java 中接口和抽象类的用法和区别

Die Verwendung und der Unterschied zwischen Schnittstellen und abstrakten Klassen in Java.

Einführung. Schnittstellen und abstrakte Klassen sind in Java zwei sehr wichtige Konzepte Verwendungen und Eigenschaften.

Schnittstelle

Eine Schnittstelle ist eine spezielle Klasse, die eine Reihe von zu erledigenden Aufgaben (Methoden) definiert, diese Methoden jedoch nicht implementiert.

    Es ist ein rein abstrakter Typ und kann nicht instanziiert werden.
  • Eine Klasse, die eine Schnittstelle implementiert, muss alle in der Schnittstelle deklarierten Methoden implementieren.
  • Schnittstellen können andere Schnittstellen erben, aber keine Klassen.
  • Methoden in Schnittstellen sind standardmäßig öffentliche Zusammenfassungen.
  • Codebeispiel:

public interface Drawable {
    void draw();
}
Abstrakte Klasse

Eine abstrakte Klasse ist eine Klasse, die abstrakte Methoden und konkrete Methoden enthält.

    Abstrakte Methoden sind Methoden, die nur deklariert, aber nicht implementiert werden.
  • Das Instanziieren einer abstrakten Klasse löst eine Ausnahme aus.
  • Abstrakte Klassen können andere Klassen oder abstrakte Klassen erben.
  • Methoden in abstrakten Klassen sind standardmäßig geschützt.
  • Codebeispiel:

public abstract class Shape {
    protected String color;
    public abstract void draw();
}
Verwendung

Schnittstelle

: Wird zum Definieren einer öffentlichen API verwendet, z. B. einer einheitlichen Schnittstelle, die von mehreren Klassen implementiert werden kann.

Zum Beispiel kann eine Drawable-Schnittstelle jede Klasse darstellen, die gezeichnet werden kann, unabhängig von der spezifischen Implementierung.

  • Drawable 接口可以表示任何可以绘制的类,而无需考虑具体的实现。

抽象类:用于创建一个类的基类,并提供一些基本行为和状态,同时允许子类定制这些行为和状态。

  • 例如,一个 Shape 抽象类可以提供一些形状的共同属性(如颜色),并定义一个抽象的 draw() 方法,用于子类实现具体的绘制行为。

差异

  • 接口只包含方法声明,而抽象类既包含方法声明也包含实现。
  • 接口不能实例化,而抽象类可以派生出子类。
  • 接口中的方法默认是公共抽象的,而抽象类中的方法默认是受保护的抽象的。

实战案例

考虑一个自定义形状绘制应用程序,其中需要显示各种形状。

  • 可以创建一个 Drawable 接口来定义绘制方法。
  • 然后可以创建 RectangleCircle 等形状的类,这些类实现 Drawable 接口并提供自己的绘制实现。
  • 应用程序可以遍历各种形状并调用 draw()Abstrakte Klasse
  • : Wird verwendet, um eine Basisklasse für eine Klasse zu erstellen und einige grundlegende Verhaltensweisen und Zustände bereitzustellen, während Unterklassen diese Verhaltensweisen und Zustände anpassen können.
🎜🎜Zum Beispiel kann eine abstrakte Shape-Klasse einige allgemeine Attribute von Formen (z. B. Farbe) bereitstellen und eine abstrakte draw()-Methode für die Implementierung von Unterklassen definieren. Spezifisches Zeichenverhalten . 🎜🎜🎜🎜Unterschied🎜🎜🎜🎜Eine Schnittstelle enthält nur Methodendeklarationen, während eine abstrakte Klasse sowohl Methodendeklarationen als auch Implementierungen enthält. 🎜🎜Schnittstellen können nicht instanziiert werden, aber abstrakte Klassen können Unterklassen ableiten. 🎜🎜Methoden in Schnittstellen sind standardmäßig öffentlich abstrakt, während Methoden in abstrakten Klassen standardmäßig geschützt abstrakt sind. 🎜🎜🎜🎜Praktischer Fall🎜🎜🎜Stellen Sie sich eine benutzerdefinierte Anwendung zum Zeichnen von Formen vor, bei der verschiedene Formen angezeigt werden müssen. 🎜🎜🎜Sie können eine Drawable-Schnittstelle erstellen, um Zeichenmethoden zu definieren. 🎜🎜Sie können dann Rectangle, Circle und andere Formklassen erstellen, die die Drawable-Schnittstelle implementieren und ihre eigene Zeichnungsimplementierung bereitstellen. 🎜🎜Anwendungen können verschiedene Formen durchlaufen und die Methode draw() aufrufen, um sie anzuzeigen. 🎜🎜

Das obige ist der detaillierte Inhalt vonDie Verwendung und der Unterschied zwischen 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