variablen vom typ einer abstrakten Klasse

Status
Nicht offen für weitere Antworten.
N

neoXxX

Gast
Hi Leute,

ich bin gerade dabei mir die Polymorphie verständlich zu machen. Ich denke ich verstehe das auch soweit. Nur habe ich hier in meinem Skript stehen:
Variablen können vom Typ einer abstrakten Klasse sein

und mir fehlt so ein wenig die Fantasie was man damit anfängt. Wenn jemand ein möglichst unkompliziertes Beispiel hier posten könnte, wäre das echt sehr nett. :D

Vielen Dank schon mal im vorraus
 

Landei

Top Contributor
Code:
abstract class Mammal {
   void saySomething();
}

class Dog extends Mammal {
   void saySomething() {
       System.out.println("Wuff");
   }
}

...
Mammal mammal = new Dog();
mammal.saySomething(); //--> Wuff
 

ARadauer

Top Contributor
die grundlegende idee dahinter ist, dass der code der die klasse benutzt nicht genau wissen muss, wie die methoden implementiert sind, es ist nur wichtig, dass die methode vorhanden ist. so kann man sehr flexible programme schreiben, in denen man einfach teile austauschen kann, ohne andere teile verändern zu müssen
 
N

neoXxX

Gast
Danke soweit für die Antworten. Die Frage was eine abstracte Variable ist, wurde geklärt. Ich hoffe, das ich es richtig begriffen habe. Falls nicht bitte ich um Korrektur.

Also mit der Variable ist ein Objekt gemeint. Und zwar ein Objekt vom abstaktem Klassentyp.

Ich verstehe jetzt nun wieder nicht, wie die abstrakte Klasse instanziert werden kann?? Da es ja heißt, dass man keine abstrakten Klassen instantieren kann (Zumindest habe ich das so gelernt). Es ist mir klar, dass es mit der Dog-Klasse zusammenhängen muss. Aber wie? Ist das dann ein abstraktes Objekt, oder ein Dog-Objekt?

Ein Vorteil sehe ich in diesem Beispiel leider nicht. Ist es nicht so, dass ich ja sowieso jede Methode in der abgeleiteten Klasse implementieren muss?
 

Landei

Top Contributor
Abstrakte Klassen können nicht "instanziiert" werden (wie uns der Compiler immer so nett mitteilt). Das heißt, ich kann niemals etwas schreiben wie new Mammal(). Geht nicht. Das heißt auch, dass im Speicher niemals ein Objekt vom Typ Mammal stehen kann. Hunde, Katzen, AmeisenIgel - ja. Mammal - nein.

Aaaber:
Dog erbt von Mammal, das heißt, dass man Dog auch als Mammal behandeln kann. Und in vielen Situationen ist uns der "genaue" Typ egal. Z.B. wäre es total doof, wenn der Tierarzt für jede Tierart eine eigene Warteliste bräuchte: List<Dog>, List<Cat>, List<Elephant>. An dieser Stelle würde es ihm wahrscheinlich ausreichen, einfach eine List<Mammal> zu nehmen. Da steckt natürlich niemals ein "Säugetier" drin, sondern immer eine Hund, eine Katze, ein Schnabeltier... Ist ihm aber hier völlig egal. Ein Mammal kann etwas sagen (etwa "Wuff" oder "Miau"), ein Mammal hat vielleicht einen Namen und Mammal hat ein Herrchen oder Frauchen, und das "reicht" dem guten Doktor an dieser Stelle im Programm.

Abstrakte Klassen helfen, gemeinsames Verhalten zu "bündeln" und konkrete Klassen zu verallgemeinern. Obwohl es kein "Auto an sich" gibt (sondern nur "Porsche", "Volvo", "Maserati"...), ist Auto trotzdem eine nützliche Kategorie (sonst hätte unsere Sprache kein Wort dafür), und es lassen sich "allgemeine Aussagen" über Autos treffen: "Kind, Autos können dich totfahren". Ist doch besser als "Kind, Porsche können dich totfahren, Kind, Volvos können dich..."
 
N

neoXxX

Gast
@Landei
Vielen Dank für die detaillierte Antwort!! Ich denke ich habs jetzt begriffen :D
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Konkatenieren eines Strings und inkremtierenden Zahl zu einer INT Variablen Java Basics - Anfänger-Themen 7
A 2 Strings vergleichen in einer methode wenn man mit Globalen variablen arbeitet Java Basics - Anfänger-Themen 12
M Warum dürfen Objekte einer Klasse auf statische Variablen dieser Klasse referenzieren? Java Basics - Anfänger-Themen 10
M Wie kann ich ein Objekt erstellen, wenn sich der Klassenname in einer Variablen befindet? Java Basics - Anfänger-Themen 10
S Variablen Variablen in einer Schleife erstellen lassen Java Basics - Anfänger-Themen 11
F Variablen Werte einer Klasse überschreiben Java Basics - Anfänger-Themen 4
H Variablen Multiplikation einer inkrementierten Variablen Java Basics - Anfänger-Themen 5
J Variablen mit einer anderen Klasse bekannt machen Java Basics - Anfänger-Themen 7
F Liste nach einer Variablen sortieren Java Basics - Anfänger-Themen 6
R Abfrage von Variablen in Unterklassen einer ArrayList Java Basics - Anfänger-Themen 9
R Auf Variablen einer anderen Klasse zugreifen? Java Basics - Anfänger-Themen 1
T Übernahme einer Variablen im ActionListener/ActionEvent Java Basics - Anfänger-Themen 2
H Variablen einer Schleife zwischenspeichern Java Basics - Anfänger-Themen 2
P Klassen Variablen von einer Klasse zur anderen Java Basics - Anfänger-Themen 5
P Variablen einer Methode in andere Method übergeben Java Basics - Anfänger-Themen 6
A Variablen aus einer Schleife gezielt auslesen Java Basics - Anfänger-Themen 11
B Probleme beim einlesen einer short variablen für einen Array Java Basics - Anfänger-Themen 1
J Zeilen aus einer .txt-Datei auslesen und Variablen zuweisen Java Basics - Anfänger-Themen 11
M Sortieren von einer Liste - zwei zugehoerige Variablen Java Basics - Anfänger-Themen 5
J Variablen überschreiben innerhalb einer Klasse Java Basics - Anfänger-Themen 7
J Wie behalten Variablen den Wert, den sie in einer anderen Methode erhalten haben? Java Basics - Anfänger-Themen 14
X Variablen Variablen erzeugen in einer Schleife? Java Basics - Anfänger-Themen 6
L Aus einer String Variablen ein Objekt erstellen Java Basics - Anfänger-Themen 14
K Einer Variablen Werte von anderen Variablen zuweisen Java Basics - Anfänger-Themen 5
L auslesen einer Variablen eines Objekt welches "Eigentum" eines Objektes der selben Klasse ist. Java Basics - Anfänger-Themen 12
M Effizienter Variablen außerhalb einer Schleife zu deklarieren? Java Basics - Anfänger-Themen 1
C Datentyp von einer Variablen ermitteln. Java Basics - Anfänger-Themen 12
G Zugriff auf private Variablen einer inneren Klasse Java Basics - Anfänger-Themen 5
J Von einer Klasse auf Variablen der anderen Klasse zugreifen Java Basics - Anfänger-Themen 8
K Übergabe einer im EventListener definierte variablen Java Basics - Anfänger-Themen 2
A Ausgabe einer variablen im textfeld Java Basics - Anfänger-Themen 3
M Variablen einer Klasse zu durchlaufen möglich? Java Basics - Anfänger-Themen 5
P Variablen in einer anderen Klasse ueberschreiben Java Basics - Anfänger-Themen 2
C Deklaration einer Variablen in einem rekursivem Aufruf Java Basics - Anfänger-Themen 5
M den Pfad einer txt-Datei in einer variablen speichern Java Basics - Anfänger-Themen 6
C Objekt soll sich selber einer Variablen zuweisen. Java Basics - Anfänger-Themen 6
E Mathematisch parsen, aber mit einer Variablen X ! Java Basics - Anfänger-Themen 6
H Unterschied statischer/dynamische Typ einer Variablen Java Basics - Anfänger-Themen 2
G Definition einer logischen Variablen Java Basics - Anfänger-Themen 4
Z Prüfung auf existenz einer Variablen Java Basics - Anfänger-Themen 4
C auf Variablen von Methoden einer anderen Klasse zugreifen Java Basics - Anfänger-Themen 7
C Aus einer *.csv Datei bestimmte Werte Variablen zuweisen Java Basics - Anfänger-Themen 19
bernd Werte einer Variablen auslesen! Java Basics - Anfänger-Themen 4
M Eibettung einer Variablen in eine Berechnung Java Basics - Anfänger-Themen 5
O Welcher Object-Lock-Pool bei static Variablen? Java Basics - Anfänger-Themen 3
T variablen klassen übergreifend Java Basics - Anfänger-Themen 12
T Variablen Java Basics - Anfänger-Themen 1
N Verständnis Frage zu Variablen Java Basics - Anfänger-Themen 3
M Aufsummieren von variablen Wertegrößen Java Basics - Anfänger-Themen 17
M Mehrere Daten/ Variablen Speichern Java Basics - Anfänger-Themen 9
J Speichern von zwei Variablen durch Auslesen aus einem Numberfield Java Basics - Anfänger-Themen 2
ashi Variablen aufrufen Java Basics - Anfänger-Themen 17
U Warum kann ich, auf private Variablen zugreifen, wenn ich ein Objekt in der Klasse, die private Variablen hat erstelle und dort drauf zugreifen will? Java Basics - Anfänger-Themen 7
C Konstruktoren und Variablen Java Basics - Anfänger-Themen 42
F Auf Variablen eines Konstruktors zugreifen Java Basics - Anfänger-Themen 4
N Variable aus anderen Variablen in statischer Klasse berechnen/abspeichern? Java Basics - Anfänger-Themen 4
M Wie kann ich bei int-Variablen im exception handler auf bestimmte Strings reagieren? Java Basics - Anfänger-Themen 5
B Variablen Variablen übertragen ohne Klassen Java Basics - Anfänger-Themen 5
B Methoden Methoden haben kein Zugriff auf variablen Java Basics - Anfänger-Themen 4
T Java Swing - Dreieck zeichnen mit verschiedenen Variablen Java Basics - Anfänger-Themen 8
Arif Vererbung Methodenvererbung mit finalen Variablen Java Basics - Anfänger-Themen 1
J Ich brauche Hilfe bei einem Code (Variablen speichern) Java Basics - Anfänger-Themen 29
N Speichern von Werten in Variablen nach Schließen des Programms Java Basics - Anfänger-Themen 3
J Frage dazu Variablen klassenübergreifend zu verändern Java Basics - Anfänger-Themen 22
M Java Instanz-Variablen ? Java Basics - Anfänger-Themen 3
B Variablen von Methoden übertragen Java Basics - Anfänger-Themen 2
M Variablen umbenennen Java Basics - Anfänger-Themen 1
T Körper Brechnung - Lokale Variablen in Methoden übergeben Java Basics - Anfänger-Themen 10
P Zugriff auf Variablen anderer Klassen in Greenfoot Java Basics - Anfänger-Themen 1
mars90 Fehler in der Variablen Deklaration Java Basics - Anfänger-Themen 8
E Variablen in formatierter Ausgabe Java Basics - Anfänger-Themen 15
V Schleife für das Einlesen von Werten für int Variablen, die Bestandteil von Arrays sein sollen Java Basics - Anfänger-Themen 16
M Komisches Verhalten der Variablen Java Basics - Anfänger-Themen 6
scratchy1 Variablen vertauschen wenn Bedingung "umgedreht" wird Java Basics - Anfänger-Themen 40
C Methoden Problem beim Speichern von Variablen Java Basics - Anfänger-Themen 1
A Übergreifende Variablen Java Basics - Anfänger-Themen 17
A Variablen Verständnisfrage bzgl. Variablen/Referenzen Java Basics - Anfänger-Themen 3
H Variablen Methode zum Abfragen von Variablen aus Subklassen Java Basics - Anfänger-Themen 9
P Variablen Variablen voneinander abhängig Java Basics - Anfänger-Themen 54
L Variablen in anderen Klassen nutzen Java Basics - Anfänger-Themen 6
M For-Schleife durch zwei versch. Variablen begrenzen Java Basics - Anfänger-Themen 27
J Klassen Variablen in andere Klassen oder Methoden übernehmen Java Basics - Anfänger-Themen 1
P Liste auslesen und in Variablen speichern Java Basics - Anfänger-Themen 7
temi Redundante Variablen Java Basics - Anfänger-Themen 29
Aprendiendo Zweifel mit versteckter Variablen Java Basics - Anfänger-Themen 16
L Variablen einmal nur zu weisen Java Basics - Anfänger-Themen 62
D Statische Variablen/Methoden Java Basics - Anfänger-Themen 3
M Listener für Button - Wert von Variablen verändern Java Basics - Anfänger-Themen 14
S Vererbung Variablen klassenübergreifend nutzen Java Basics - Anfänger-Themen 42
D Fehlermeldung obwohl Variablen bereits deklariert sind? Java Basics - Anfänger-Themen 14
E 2 Probleme - Datum & private finale Variablen Java Basics - Anfänger-Themen 5
Aruetiise Variablen JFrame und Variablen Java Basics - Anfänger-Themen 3
L Variablen dekleration + reset Java Basics - Anfänger-Themen 16
D Kapselung final Variablen mit Getter? Java Basics - Anfänger-Themen 2
C Variablen von einem JFrame in einen anderen übertragen Java Basics - Anfänger-Themen 3
P Interface Variablen-Inhalte werden nicht übergeben Java Basics - Anfänger-Themen 3
C Variablen in Schleifen außerhalb verwenden Java Basics - Anfänger-Themen 2
S Variablen Flexible Variablen Namen Java Basics - Anfänger-Themen 3
R Erste Schritte 3 Variablen hochzählen lassen Java Basics - Anfänger-Themen 1
RowdyN Variablen Variablen beliebig benennen? Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben