Vererbung [Erledigt]

Status
Nicht offen für weitere Antworten.

MelcomX01

Mitglied
Guten Tag.

Ich schreibe derzeit an Klassen, die in 3 Ebenen vererbt werden sollen. In der obersten Ebene sollen einige Elemente deklariert werden, die dann in der zweiten Ebene mit Daten belegt werden sollen und in der untersten Ebene konstant sein sollen (also unveränderbar). Bei Methoden war das ja dank abstract ganz einfach, aber wie regel ich das mit Variablen mit einfachen Datentypen?
 

LoN_Nemesis

Bekanntes Mitglied
Das geht nicht soweit ich weiss, aber du kannst ja in der unteren Ebene z.B. einfach die Setter mit leeren Methoden überschreiben, so dass man die Variablen nicht mehr ändern kann. Ist allerdings nicht sehr elegant.
 

MelcomX01

Mitglied
Das wäre aber ärgerlich.

Das mit den leeren Methoden möchte ich lassen, denn sonst könnte ich die Konstanten auch gleich als Variablen lassen, das wäre genauso unsauber. Trozdem Danke für den tipp.

Ich müßte es jetzt halt so regeln, das ich diese Variablen dann erst in der mittleren Ebene einführe (Da gibts dann ja für manche sowieso noch neue).
Vom Aufwand her würde es auch trotz der bereits größeren Anzahl der Klassen auf dieser Ebene (über 30) nicht beduetend mehr werden, da sie dort ja eh erst mit Daten befüllt werden. Aber da diese Variablen nun mal für jede Klasse die gleichen Typen und Namen haben und nur andere Werte, hätte ich es einfach besser ("sauberer") gefunden, wenn ich es mitvererben könnte.
 

MelcomX01

Mitglied
Ich weiß nicht, wie du darauf kommst.
Ich bin kein Profi und habe mein Wissen über OO und Java nur aus Büchern und dem INet.
Aber ich bin der Meinung, das ich die Veerbung genau für das nutze, für das sie gedacht ist.

Wenn ich mit diesem Teil fertig bin, sollen nachher ca 30 Klassen da sein, aus denen ich dann jeweils ca 1-5 Objekte bilden kann. Die oberste Ebene ist komplett abstakt und sollte eigentlich auch schon die Variablen(immer gleicher Name) vorgeben, in der mittleren Ebene sollen unterschiedliche statische Werte hinzugefügt werden, die dann für alle abgeleiteten Klassen in der untersten Ebene gleich sind und konstant sein sollen.

Also wenn es da was gibt, das ich falsch verstanden habe, bitte erkläre es mir.

Ansonsten habe ich es jetzt aufgegeben und die Konstanten erst auf der mittleren Ebene angelegt. Falls es doch noch eine Möglichkeit gibt das eleganter zu lösen, immer her damit, dann weiß ich es wenigstens für die Zukunft.

Gruß
 

Wildcard

Top Contributor
Du hast bis jetzt noch gar nicht erwähnt was du machen willst, und wie du es derzeit löst, was soll ich also sagen.
Dein erstes Posting stimmt mich allerdings sehr bedenklich, da sich das so gar nicht nach 'Implementierung zur Schnittstelle hin' anhört. :?
 

MelcomX01

Mitglied
Mhhh....
Jetzt hast du mich völlig aus dem Konzept gebracht. Was du mir nun mit "Implementierung zur Schnittstelle hin" sagen willst und was das jetzt mit Vererbung zu tun hat, versteh ich überhaupt nicht. Und selbst, wenn ich die Variablen durch eine Schnittstelle implementieren würde, hätte ich doch immer noch das selbe Problem. Ist wahrscheinlich eine Gretchenfrage, oder? :wink:
Und ich habe bewusst darauf verzichtet, hier Codeausschnitte zu zeigen oder genauer auf auf den Inhalt einzugehen. Denn das hat ja mit der Frage nix zu tun und würde hier wahrscheinlich zu weit führen. Eigentlich wollte ich ja nur wissen ob man vererbte Variablen in der abgeleiteten Klasse zu Konstanten (um)deklarieren kann.
 

SnooP

Top Contributor
Also Variablen würde ich generell nicht schnittstellentechnisch vorgeben (außer protected) - wenn man die getter/setter in der abstrakten Oberklasse definiert, sollte das an Schnittstelleninformation reichen... also nicht auch noch alle Attribute mit reinnehmen.
 

EOB

Top Contributor
hi, also richtung interface implementieren ist schon wichtig und nicht nur son ding, was man machen kann. man sollte. das gibt deinem code sehr viel flexibilitaet! so kannst du halt methodenparameter oder listen flexibler gestalten. ein beispiel:

Code:
interface Stack{
    public void push(String elem);
    public String top();
    ....
}

dann kannst du mittels

Code:
class ArraylistStack implements Stack{
    private List l = new ArrayList();

    public void push(String elem){
         l.add(elem)
    }

    public String top(){
          return l.get(0);
    }
    .....

}


jetzt kannst du in deinem code entweder schreiben:

Code:
ArralistStack als = new ArralistStack();

das wuerde dich aber doch recht unflexibel machen, da du ja jetzt bei methodenparametern auf die konkrete implementierung des stacks angewiesen bist. hast du aber noch mehr davon, zb VectorStack oder ArrayStack oder so, dann geht das nicht. hast du aber im code sowas:

Code:
Stack als = new ArralistStack();

dann kannst du eine liste mit deinem stacks zb so anlegen:

Code:
ArrayList<Stack> a = new ArrayList<Stack>();

oder eine methode so:

Code:
void deineMethode(Stack){...}

du verstehst, worauf ich hinaus will? das ist sehr wichtig!

gruesse
 

MelcomX01

Mitglied
Hi Mørketid.

Danke für deinen Hilfeversuch. Aber ich will ehrlich sein.
Ich verstehe nicht, worauf du hinaus willst. Nur um eines vorweg zu nehmen: Mein Problem habe ich inzwischen gelöst. Ich hatte eigentlich nur einen Denkfehler in meiner Planung. Inzwischen habe ich die 3. Ebene von der Klassenebene in die Objektebene verlagert. Das erschien mir anfangs etwas unpraktisch, hat sich aber mittlerweile als der beste Weg erwiesen. Somit hat sich das Problem in Wohlgefallen aufgelöst.

Ich muß auch zugeben, das ich mich mit dem CollectionsFramework bisher noch nicht groß beschäftigt habe, da meinen
Ansprüchen einfache Arrays bisher Genüge getan haben. Was mich bei deinem Code aber absolut verwirrt hat und auch ein Blick in meine Bücher nicht auflösen konnte, ist folgendes:

ArrayList<Stack> a = new ArrayList<Stack>();

Mir ist an sich schon klar, was du mir sagen wolltest (im Bezug auf Schnittstellen und Implementierung) und auch Array- und LinkedList sind mir nicht fremd. Aber das "<Stack>" verwirrt mich total. ist das eine Art Platzhalter? Ich kann damit nichts anfangen.
Wie gesagt, vielen Dank für die Hilfe, wäre Super, wenn du mir diese Wissenlücke noch schliessen könntest.
gruß...
 

Illuvatar

Top Contributor
MelcomX01 hat gesagt.:
ArrayList<Stack> a = new ArrayList<Stack>();

Mir ist an sich schon klar, was du mir sagen wolltest (im Bezug auf Schnittstellen und Implementierung) und auch Array- und LinkedList sind mir nicht fremd. Aber das "<Stack>" verwirrt mich total. ist das eine Art Platzhalter? Ich kann damit nichts anfangen.
Wie gesagt, vielen Dank für die Hilfe, wäre Super, wenn du mir diese Wissenlücke noch schliessen könntest.
gruß...

Das nennt sich ein Generic und ist eine neue Spracheigenschaft von Java 5. Es bedeutet, dass die ArrayList nur Stack-Objekte aufnehmen kann. Stack ist btw. auch generisch - Eine ArrayList, die nur Stacks aufnehmen kann, in den nur Strings gespeichert werden können sieht so aus:
Code:
ArrayList<Stack<String>>
;)
 

MelcomX01

Mitglied
OK. Erwischt...
Das ist dann natürlich klar, da sich alle Bücher zum Thema Java, die ich besitze, auf Java2 beziehen . Ich habe den Kauf neuer Bücher zum Thema Java5 bisher gescheut, bin immer noch auf der Suche nach einem, das sich nur auf die Neuerungen zu Java2 bezieht.
Auf jeden Fall wie schon so oft VIELEN DANK für die Hilfen und geduldigen Auskünfte. Thema erledigt.
Gruß...

EDIT: Hab mir jetzt das Buch aus eurer Werbung bestellt. Ist zwar auch wieder ein Komplettwerk, aber was soll's, bei dem Preis...
Werde euch also zumindestens in diese Richtung mit dummen Fragen verschonen. :wink:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
imocode Vererbung Problem mit Vererbung Java Basics - Anfänger-Themen 2
M Vererbung - Polymorphie Java Basics - Anfänger-Themen 37
L Java- Vererbung Java Basics - Anfänger-Themen 4
ineedhelpinjava Vererbung Java Basics - Anfänger-Themen 12
ineedhelpinjava Vererbung Java Basics - Anfänger-Themen 1
I JSON / XML Struktur mit Vererbung / Interfaces Java Basics - Anfänger-Themen 0
M Interface oder Vererbung? Java Basics - Anfänger-Themen 12
M Vererbung Java Basics - Anfänger-Themen 6
M Designentscheidung von Attributen/Methoden im Falle von Vererbung Java Basics - Anfänger-Themen 8
M Generics Vererbung Listen Java Basics - Anfänger-Themen 2
A Methoden Vererbung und Interface Java Basics - Anfänger-Themen 14
D Klassen und Vererbung Java Basics - Anfänger-Themen 2
U Vererbung Java Basics - Anfänger-Themen 7
D Vererbung Java Basics - Anfänger-Themen 3
K Schleife berechnet kein Ergebnis (Vererbung) Java Basics - Anfänger-Themen 6
00111010101 Objektorientiertes Programmieren mit Vererbung (Zahlen in Array verschwinden) Java Basics - Anfänger-Themen 3
W Zur Vererbung: Wann und wie? Java Basics - Anfänger-Themen 35
H Datenkapselung, Vererbung und UML Java Basics - Anfänger-Themen 16
districon Super-Stichwort/ Vererbung Java Basics - Anfänger-Themen 3
YaU Vererbung erstellt NullPointerException? Java Basics - Anfänger-Themen 4
1 Vererbung Klassenattribute Java Basics - Anfänger-Themen 9
TimoN11 Frage zu Java-Vererbung (Cast) Java Basics - Anfänger-Themen 5
N Thema Vererbung Java Basics - Anfänger-Themen 31
A Vererbung Vererbung Übung Java Basics - Anfänger-Themen 5
B Vererbung - Sichtbarkeitsmodifikation - protected Java Basics - Anfänger-Themen 10
B Best Practice Unschlüssig ob Vererbung oder Interface Java Basics - Anfänger-Themen 2
G Java Vererbung Java Basics - Anfänger-Themen 8
Y Vererbung Konto - Anfangsprobleme Java Basics - Anfänger-Themen 7
A Vererbung Klassen im Bezug auf Auto´s Java Basics - Anfänger-Themen 18
A Klassen Vererbung und zusätzliche Unterklassen Java Basics - Anfänger-Themen 23
M Vererbung mit Enums Java Basics - Anfänger-Themen 8
Kirby.exe Vererbung im Detail erklärt? Java Basics - Anfänger-Themen 9
N Modellierung, vererbung, Java Basics - Anfänger-Themen 163
M Fehlendes Verständnis für dynamische Bindung und Vererbung Java Basics - Anfänger-Themen 13
W OOP Vererbung im Computerspiel Java Basics - Anfänger-Themen 7
J Probleme mit Vererbung Java Basics - Anfänger-Themen 4
I Vererbung Java Basics - Anfänger-Themen 13
W OOP Vererbung und Problem bei Zählschleife in einer Methode Java Basics - Anfänger-Themen 10
W Methoden Verständnisfrage Vererbung von Methoden Java Basics - Anfänger-Themen 14
V Vererbung Java Basics - Anfänger-Themen 2
J Frage zur Vererbung Java Basics - Anfänger-Themen 1
J Vererbung Java Basics - Anfänger-Themen 3
U Was löst meine NullPointerException aus? (Vererbung) Java Basics - Anfänger-Themen 12
O Vererbung Ueben mit kleiner Datenstruktur von Räumen Java Basics - Anfänger-Themen 10
O Umgang mit Vererbung verstehen Java Basics - Anfänger-Themen 4
A Vererbung/Interfaces/Generics Java Basics - Anfänger-Themen 12
O Vererbung änderung des Konstruktors Java Basics - Anfänger-Themen 8
L Vererbung Java Basics - Anfänger-Themen 5
E HashMap+Vererbung Java Basics - Anfänger-Themen 11
E Vererbung super-Methoden Aufruf Java Basics - Anfänger-Themen 3
B Java Vererbung Fragen (zu Code Beispiel) Java Basics - Anfänger-Themen 3
A Objekterstellung bei der Vererbung Java Basics - Anfänger-Themen 7
P Vererbung Warum funktioniert die Vererbung hier nicht Java Basics - Anfänger-Themen 14
S Vererbung Java mehrfach Java Basics - Anfänger-Themen 10
B Objekte zählen/ Vererbung/ Kopplung/ Interface/ Abstract Class Java Basics - Anfänger-Themen 5
A Klassen Vererbung privater Methoden und Member Java Basics - Anfänger-Themen 12
A Konstruktoren Vererbung Java Basics - Anfänger-Themen 3
ReinerCoder Vererbung von JFrame in einer Klasse entfernen Java Basics - Anfänger-Themen 5
W Vererbung, abstract und Konstruktoren Java Basics - Anfänger-Themen 30
J Vererbung und Methodenaufruf Java Basics - Anfänger-Themen 11
G Polymorphie, Vererbung, statischer Typ, Laufzeittyp Java Basics - Anfänger-Themen 2
H Vererbung mit private instanzvariablen Java Basics - Anfänger-Themen 9
S Vererbung Funktionsweise Code zur Vererbung Java Basics - Anfänger-Themen 1
C Methoden Vererbung private Attribute/public Methoden Java Basics - Anfänger-Themen 4
S Verständnis Vererbung Java Basics - Anfänger-Themen 3
D JavaFX Vererbung Java Basics - Anfänger-Themen 2
U Vererbung Generizität und Vererbung Java Basics - Anfänger-Themen 4
A Vererbung bei Klassen mit Objekt der Klasse im Konstruktor Java Basics - Anfänger-Themen 4
K Vererbung Octagon von Circle Java Basics - Anfänger-Themen 0
B Hilfe bei Vererbung Java Basics - Anfänger-Themen 2
D Vererbung Frage zum Klassenaufbau mit Vererbung Java Basics - Anfänger-Themen 1
T Vererbung und interface. Java Basics - Anfänger-Themen 1
S Gehaltsberechnung (Vererbung, abstrakte Methoden) Java Basics - Anfänger-Themen 6
S Vererbung Java Basics - Anfänger-Themen 1
F Vererbung in zwei Richtungen? Java Basics - Anfänger-Themen 14
D Vererbung / Polymorphie Java Basics - Anfänger-Themen 5
O Vererbung Java Basics - Anfänger-Themen 5
MiMa Vererbung Theorie OK, Praxis ?? Java Basics - Anfänger-Themen 4
Arif Vererbung Vererbung Variablen überschreiben Java Basics - Anfänger-Themen 1
C Vererbung - Ausgaben bestimmen Java Basics - Anfänger-Themen 6
S Vererbung Java Basics - Anfänger-Themen 10
L Setter und Getter/Vererbung Java Basics - Anfänger-Themen 6
C Konstruktoren und Vererbung Java Basics - Anfänger-Themen 2
J Kleinere Frage zur Vererbung/Objekterzeugung Java Basics - Anfänger-Themen 2
G Vererbung Java Basics - Anfänger-Themen 12
J Vererbung privater Variablen Java Basics - Anfänger-Themen 7
J Vererbung Vererbung von Methoden Java Basics - Anfänger-Themen 6
B Vererbung Java Basics - Anfänger-Themen 12
K Vererbung (super) Java Basics - Anfänger-Themen 2
A ArrayQueue mit Exceptions und Vererbung Java Basics - Anfänger-Themen 3
J Java: static bei Vererbung Java Basics - Anfänger-Themen 5
C Vererbung Java Basics - Anfänger-Themen 4
L Vererbung Java Basics - Anfänger-Themen 3
J Klassenorganisation | Vererbung Java Basics - Anfänger-Themen 1
B Vererbung Vererbung Java Basics - Anfänger-Themen 2
N Generics Vererbung Wildcard Interface Java Basics - Anfänger-Themen 8
A Benötige Hilfe bei Vererbung Java Basics - Anfänger-Themen 1
M Anfängerprobleme mit Vererbung Java Basics - Anfänger-Themen 27
J Vererbung Java Basics - Anfänger-Themen 9
F Vererbung von Attributen zwischen zwei Klassen Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben