Theorie: Abstract Method

youngster

Aktives Mitglied
Ich bin nun dabei ein Hintergrundwissen aufzubauen. Im Rahmen der Polymorphie wird von Abstracten Methoden gesprochen, die keinen Code in der SuperClass haben, da sie dann in den darunter liegenden Classen definiert wird.
Kann mich jemand 'aufklären' was der Vorteil einer Superklasse ist, die keinen Code in der Methode hat. Dann kann ich doch einfach direkt in jeder meiner untergeordneten Class eine Methode mit Code erzeugen.
Danke für die Erklärung.
 

Murray

Top Contributor
Natürlich kann man auch einfach per Konvention in den abgeleiteten Klassen solche Methoden deklarieren. Bei abstrakten Klassen (oder auch bei Interfaces) erzwingt der Compiler aber diese Konvention.
Für den Verwender ist es dann egal, mit welcher abgeleiteten Klasse er es zu tun hat; wenn er nichts von irgendwelchen Spezifika der abgeleiteten Klasse wissen muss, dann kann er einfach nur mit dem (hier abstrakten) Basistyp umgehen.
Das hilft (insbesondere in größeren Projekten), die Kopplung zwischen verschiedenen Programmteilen zu verringern und erleichtert so spätere Änderungen/Erweiterungen.
 
S

SlaterB

Gast
Interface verstehen ist der Schlüssel dazu, hat sämtliche Funktionen,
abstrakte Klasse ist eine Vermischung aus Interface + Teil-Implementierung,

wenn es das nicht gäbe, würde man es aus einer normalen Klasse + zweites Objekt, von dem nur das Interface bekannt ist, zusammenbauen
 

youngster

Aktives Mitglied
von Murrays Antwort:
Könnte man dann den grössten Vorteil so formulieren, das durch abstract method sichergestellt wird, dass in allen untergeordneten Klassen die gleiche Nomenklatur verwendet wird?

von SlaterB Antwort:
Mit Interfaces kann ich dann also ein Konzept realisieren, wo eine Class 'in gewisser Art', zwei Superclassen haben kann (ich weiss, dass geht nicht direkt). Aber dann verstehe ich noch nicht was der Vorteil einer abstract method ohne Code ist.
 
S

SlaterB

Gast
wie gesagt: bevor du dich nicht zu Interface allgemein klar äußerst, brauch man über abstrakte Klassen nicht reden,
kennst du Interface wie List für ArrayList/LinkedList oder Comparable für nahezu alle Klassen, die dann mit nur einem Code sortiert werden können?

Interface ist die EINE Grundlage überhaupt für Polymorphie und quasi alles in Objektorientierung
 

Michael...

Top Contributor
Grundsätzlich ist es immer gut gegen das "kleinste gemeinsame" zu programmieren - also gegen Interfaces und abstrakte Klassen. (Hast Du Dich bereits mit Interfaces auseinander gesetzt? Falls nein, würde ich damit anfangen)
Dadurch hat man letztendlich einer höhere Flexibiliät oder kann unterschiedliche Ausprägungen basierend auf einem gemeinsamen Interface oder abstrakten Klasse gemeinsam verwalten.
(Bsp. Wenn Du eine Waschstrasse betreibst, interessiert Dich i.d.R. nur das Auto ansich (z.B. die Abmaße) und nicht, ob es sich um einen BMW, einen Audi oder VW handelt)

Allgemein gibt es verschiedene "Arten" von abstrakten Klassen (ohne Anspruch auf Vollständigkeit):

Adapter (z.B. MouseAdapter), sie implementieren ein oder mehrere Interfaces - ohne allerdings den Inhalt der Methoden zu definieren. Bei Verwendung solcher Adapter reicht es aus nur die Methoden zu überschreiben, die einen tatsächlich interessieren. Eine Implementierung der übrigen Methoden des Interfaces ist nicht notwendig.

abstrakte "Modelle" (z.B. AbstractTableModel), sie implementieren meist auch ein oder mehrere Interfaces. Hier werden einzelne Methoden bereits implementiert, andere für die spezifische Ausprägung der konkreten Klassen relevanten Methoden werden nur abstrakt oder garnicht definiert.

Eine abstrakte Klasse mit nur abstrakten Methoden sollte dann eher ein Interface sein.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Y Pointer / Referenz - Theorie Java Basics - Anfänger-Themen 3
B Theorie Rot-Schwarz-Bäume Java Basics - Anfänger-Themen 2
A string-theorie Java Basics - Anfänger-Themen 1
MiMa Vererbung Theorie OK, Praxis ?? Java Basics - Anfänger-Themen 4
R OOP Den Schritt von Theorie zur Praxis nicht verstanden Java Basics - Anfänger-Themen 21
P OOP-Theorie-Frage: Referenz auf Objekt Java Basics - Anfänger-Themen 27
M Eine kleine Frage bzw kleine Theorie frage String[arg] Java Basics - Anfänger-Themen 6
E Generics-Theorie Java Basics - Anfänger-Themen 2
Say abstract class und Objekt erzeugen - Dringend Hilfe Java Basics - Anfänger-Themen 10
S Wann Methode abstract? Java Basics - Anfänger-Themen 10
O Verständniss Problem bei abstract class Java Basics - Anfänger-Themen 7
H abstract und interface Java Basics - Anfänger-Themen 4
H abstract - Wozu? Java Basics - Anfänger-Themen 6
B Interface vs Abstract Java Basics - Anfänger-Themen 2
B Objekte zählen/ Vererbung/ Kopplung/ Interface/ Abstract Class Java Basics - Anfänger-Themen 5
W Vererbung, abstract und Konstruktoren Java Basics - Anfänger-Themen 30
J OOP Wie sollte ich das organisieren (Abstract? Interface?) Java Basics - Anfänger-Themen 33
Azazel Ist die abstract class das selbe wie ein interface ? Java Basics - Anfänger-Themen 33
S Compiler-Fehler not abstract and does not override Java Basics - Anfänger-Themen 9
M abstract method does not override or implement.... Java Basics - Anfänger-Themen 7
B Fehler : class is abstract and does not overwrite Java Basics - Anfänger-Themen 2
B klasse abstract Java Basics - Anfänger-Themen 9
R Wofür abstract? Java Basics - Anfänger-Themen 29
E Klasse abstract machen Java Basics - Anfänger-Themen 3
G Schlüsselworte Bedeutung von abstract Java Basics - Anfänger-Themen 2
C Liste mit Attribut Abstract vererben Java Basics - Anfänger-Themen 11
P Problem mit Eclipse "must be declared as abstract" Java Basics - Anfänger-Themen 3
O Abstract Method & Generics Java Basics - Anfänger-Themen 10
B abstract static Java Basics - Anfänger-Themen 16
T abstract class Java Basics - Anfänger-Themen 8
K abstract Java Basics - Anfänger-Themen 8
W abstract static Java Basics - Anfänger-Themen 3
F does not overwride abstract method Java Basics - Anfänger-Themen 2
G Verständnisfrage zum Interface und Abstract Java Basics - Anfänger-Themen 3
A in abstract Klasse private Variablen Java Basics - Anfänger-Themen 3
J abstract & Polymorphismus Java Basics - Anfänger-Themen 11
K Problem mit Abstract Table Model Java Basics - Anfänger-Themen 5
D Fehlermeldung "Time is not abstract" Java Basics - Anfänger-Themen 6
T Problem mit Abstract Windowing Toolkit(simples Problem) Java Basics - Anfänger-Themen 8
P Adaptor, Abstract Factory Java Basics - Anfänger-Themen 12
K <class> is not abstract and does not override abstract Java Basics - Anfänger-Themen 5
S Brauche Hilfe bei "abstract" Java Basics - Anfänger-Themen 12
G fenster abstract Java Basics - Anfänger-Themen 18
R abstract class <-> instance Java Basics - Anfänger-Themen 6
G Abstract Class - Abstract Method Java Basics - Anfänger-Themen 4
R finaler Wert in outerMethod von method in InnerMethodClass Java Basics - Anfänger-Themen 2
S Methoden 2 non-static Methoden, trotzdem Fehler "non static method can not be referenced from a static context" Java Basics - Anfänger-Themen 9
P myClass?.method() in Java Java Basics - Anfänger-Themen 4
T setFill method Java Basics - Anfänger-Themen 3
H Methode mit Array als Rückgabe This method must return a result of Type int[] Java Basics - Anfänger-Themen 2
N The method setSaldo(double) in the type Konto is not applicable for the arguments (int, int) Java Basics - Anfänger-Themen 2
A startsWith method und substring Java Basics - Anfänger-Themen 2
W Remote Method Invocation RMI - Problem Java Basics - Anfänger-Themen 0
I Java Generics factory method Java Basics - Anfänger-Themen 2
V the static method should be accessed is a static way Java Basics - Anfänger-Themen 6
N Erste Schritte "non-static method" oder "XYZ can not be resolved" Java Basics - Anfänger-Themen 21
K Eigene Annotations, Pre-/Post-/Call-Method Java Basics - Anfänger-Themen 6
B Threads Thread sleep() Method einfache Frage Java Basics - Anfänger-Themen 8
G Was als main Method Java Basics - Anfänger-Themen 6
M Cannot make a static reference to the non-static method Java Basics - Anfänger-Themen 10
E Array to String Method Reverse Java Basics - Anfänger-Themen 5
D Methoden undefined method Java Basics - Anfänger-Themen 13
S Method mit Eingabe abrufen Java Basics - Anfänger-Themen 1
D Interface Amazon Skill Kit, Interface but method in other class? Java Basics - Anfänger-Themen 3
U Method References Java Basics - Anfänger-Themen 1
UnityFriday method getPrevious in class List<ContentType> cannot be applied to given types Java Basics - Anfänger-Themen 29
P Variablen einer Methode in andere Method übergeben Java Basics - Anfänger-Themen 6
B Methoden The method mirror(double[]) in the type Convolution is not applicable for the arguments (double) Java Basics - Anfänger-Themen 8
J easy remove method Java Basics - Anfänger-Themen 1
R The method printf(String, Object[]) in the type printStrem in not applicable for the arguments ... Java Basics - Anfänger-Themen 3
M Deklaration und Initialisierung bei Method Erstellung Java Basics - Anfänger-Themen 12
K Variablen RETURN in Case-Switch / This method must return a result of type Item Java Basics - Anfänger-Themen 4
W Compiler-Fehler "non-static method cannot be referenced"-Problem Java Basics - Anfänger-Themen 6
K String equalIgnoreCase() Method Java Basics - Anfänger-Themen 19
E non-static method und static context Java Basics - Anfänger-Themen 15
L Command Prompt / Main Method / String Java Basics - Anfänger-Themen 9
M Methoden "Non-static method xy cannot be referenced from a static context" Java Basics - Anfänger-Themen 20
T selection method does not contain a main type Java Basics - Anfänger-Themen 7
U UML Factory Method Java Basics - Anfänger-Themen 4
R Compiler-Fehler Cannot find symbol (Method printIn) Java Basics - Anfänger-Themen 3
H non-static method cannot be referenced from a static context Java Basics - Anfänger-Themen 2
L Cannot make a static reference to the non-static method Java Basics - Anfänger-Themen 6
B Object "Method" in TreeSet, Fehler beim Vergleichen/Comparable Java Basics - Anfänger-Themen 9
M Problem mit Static Method Java Basics - Anfänger-Themen 8
W Main-method in Object-classes Java Basics - Anfänger-Themen 5
J Compiler findet method nicht Java Basics - Anfänger-Themen 12
M This method must return a result of type int Java Basics - Anfänger-Themen 13
M Fehlermeldung: the method.... ist undefined for the type object Java Basics - Anfänger-Themen 6
S this method must return a result of type double Java Basics - Anfänger-Themen 2
G Collections.binarySearch(LinkedList): cannot find method Java Basics - Anfänger-Themen 6
C Methoden numberField.getDouble no such method error Java Basics - Anfänger-Themen 4
F Mal wieder: Cannot make a static reference to the non-static method Java Basics - Anfänger-Themen 9
F Cannot make a static reference to the non-static method Java Basics - Anfänger-Themen 3
Q non-static method blub cannot be referenced from a static context Java Basics - Anfänger-Themen 6
E Netbeans, "class does not have a main method" Java Basics - Anfänger-Themen 8
L no such method error: main() Java Basics - Anfänger-Themen 2
N public class -> public method -> variable private? Java Basics - Anfänger-Themen 10
R Could not find main method Java Basics - Anfänger-Themen 3
U Boolean istGleich() Method Java Basics - Anfänger-Themen 15
Luk10 method () not found Java Basics - Anfänger-Themen 9

Ähnliche Java Themen

Neue Themen


Oben