it-swarm.com.de

Was sind abstrakte Klassen und abstrakte Methoden?

Mögliches Duplizieren:
Abstrakte Klasse in Java

Ich habe mehrere Erklärungen bekommen, aber bis jetzt kann ich nicht verstehen, was die abstrakten Klassen und Methoden in Java sind.

Einige sagten, es habe etwas mit der Sicherheit des Programms zu tun, andere sagten, es sei nichts dergleichen.

Selbst aus dem Buch von Dietel & Dietel habe ich keinen Sinn. .__ Wann, wo und warum verwenden wir es?

Erklären Sie es bitte so, als würden Sie einen Anfänger unterrichten. Ich würde mich wirklich über Ihre Hilfe freuen.

40
Umer Hassan

Eine abstrakte Klasse ist eine Klasse, die nicht instanziiert werden kann. Es dient nur dazu, dass andere Klassen erweitert werden.

Abstrakte Methoden sind Methoden in der abstrakten Klasse (müssen als abstrakt deklariert werden), dh die sich erweiternde konkrete Klasse muss sie überschreiben, da sie keinen Körper hat.

Der Hauptzweck einer abstrakten Klasse ist, wenn Sie in Unterklassen gemeinsamen Code verwenden können, die abstrakte Klasse jedoch keine eigenen Instanzen haben sollte.

Mehr darüber erfahren Sie hier: Abstrakte Methoden und Klassen

73
Aviram Segal

- Abstract class ist einer, der nicht instanziiert werden kann , d. h. seine object kann nicht erstellt werden.

- Abstract method sind Deklaration der Methode ohne ihre Definition .

- Ein Non-abstract class kann nur über nicht abstrakte Methoden verfügen.

- Ein Abstract class kann sowohl die nicht-abstrakten als auch die abstrakten Methoden haben.

- Wenn die Class einen Abstract method hat, muss die Klasse auch abstrakt sein.

- Ein Abstract method muss von der allerersten nicht-abstrakten Unterklasse implementiert werden.

- Abstract class in Design patterns wird verwendet, um das Verhalten zu kapseln, das sich ständig ändert.

75

Eine abstrakte Methode ist eine Methodensignaturdeklaration ohne Hauptteil. Zum Beispiel:

public abstract class Shape {
    . . .

    public abstract double getArea();
    public abstract double getPerimeter();
}

Die Methoden getArea() und getPerimeter() sind abstrakt. Da die Shape-Klasse eine abstrakte Methode hat, muss auch muss abstract deklariert werden. Eine Klasse kann auch ohne abstrakte Methoden als abstract deklariert werden. Wenn eine Klasse abstrakt ist, kann keine Instanz davon erstellt werden. Man kann nur Instanzen von (konkreten) Unterklassen erstellen. Eine konkrete Klasse ist eine Klasse, die nicht abstrakt deklariert ist (und daher keine abstrakten Methoden hat und alle vererbten abstrakten Methoden implementiert). Zum Beispiel:

public class Circle extends Shape {
    public double radius;
    . . .

    public double getArea() {
        return Math.PI * radius * radius;
    }

    public double getPerimeter() {
        return 2.0 * Math.PI * radius;
    }
}

Dafür gibt es viele Gründe. Eine Methode wäre, eine Methode zu schreiben, die für alle Formen gleich ist, aber von formspezifischem Verhalten abhängt, das auf der Ebene Shape unbekannt ist. Zum Beispiel könnte man die Methode schreiben:

public abstract class Shape {
    . . .

    public void printArea(PrintStream out) {
        out.println("The area is " + getArea());
    }
}

Dies ist zwar ein erfundenes Beispiel, zeigt aber die Grundidee: Konkretes Verhalten im Hinblick auf nicht näher bezeichnetes Verhalten definieren.

Ein weiterer Grund für eine abstrakte Klasse ist, dass Sie eine Schnittstelle teilweise implementieren können. Alle in einer Schnittstelle deklarierten Methoden werden von jeder Klasse, die die Schnittstelle implementiert, als abstrakte Methoden geerbt. Manchmal möchten Sie eine teilweise Implementierung einer Schnittstelle in einer Klasse bereitstellen und die Details den Unterklassen überlassen. Die teilweise Implementierung muss als abstrakt deklariert werden.

16
Ted Hopp

abstrakte Methode habe keinen Körper. Eine gut definierte Methode kann nicht als abstrakt deklariert werden.

Eine Klasse die hat eine abstrakte Methode muss als abstrakt deklariert werden .

Abstrakte Klasse kann nicht instanziiert werden.

3
Abhishekkumar

Eine abstrakte Klasse ist eine Klasse, aus der Sie kein Objekt erstellen können, daher wird sie meistens zum Erben verwendet. (Ich bin nicht sicher, ob Sie statische Methoden verwenden können.)

Eine abstrakte Methode ist eine Methode, die die untergeordnete Klasse überschreiben muss, sie hat keinen Körper, ist als abstrakt gekennzeichnet und nur abstrakte Klassen können diese Methoden haben.

1
Alex555

Mit abstrakten Klassen können Sie ein Skelett für andere Klassen erweitern.

Sie können sie nicht instanziieren, aber Sie können einige allgemeine Implementierungen verwenden, die Sie in den Klassen verwenden können, die sie erweitern.

0
Atropo

Sobald Sie wissen, was abstrakt in Java bedeutet, würden Sie fragen: Warum setzen sie das ein? Java funktioniert möglicherweise auch ohne abstraktes Material, ABER es ist Teil eines bestimmten OO - Stils oder Vokabulars. Es gibt wirklich Situationen, in denen eine abstrakte Klasse oder Methode eine elegante Methode ist, um die Absicht des Programmautors auszudrücken. Meistens, wenn Sie ein Framework oder eine Bibliothek programmieren, die von anderen verwendet wird. 

0
PeterMmm