finale Attribute in abstrakten Basisklassen

nossek

Aktives Mitglied
Hallo,

ein weiterer Punkt an dem ich grad hänge:

Nehmen wir an, man möchte eine abstrakte Basisklasse entwickeln, die bereits Attribute hat.

Es ist soweit logisch: abstrakte Klassen haben keine Konstruktoren.

Wie also die Attribute in abgeleiteten Klassen initialisieren? Ich sehe da zwei Möglichkeiten:
1. In der abstrakten Basisklasse setter-Methoden für die entsprechenden (privaten) Attribute implementieren, die dann von den Konstruktoren der abgeleiteten Klasse aufgerufen werden.
2. Die Attribute als "protected" modifizieren und in den Konstruktoren abgeleiteten Klassen direkt initialisieren.

soweit korrekt?

Wenn man nun aber möchte, daß einige der Attribute final sind (zb name und geschlecht), also nur ein einziges mal initialisiert werden dürfen und danach nicht mehr geändert, dann geht Möglichkeit 1 schon mal nicht. ("cannot assign a value to final variable name" meckert der Compiler in der Implementierung der setter-Funktion von finalen Attributen).

Letztlich gefällt mir aber die erste Methode besser, da man ja in der abstrakten Basisklasse eine Methode wie "initialisiere(typ1 attribut1, typ2 attribut2 ...)" implementieren kann, die dann in den abgeleiteten Klassen ebenso komfortabel aufgerufen werden kann wie der Konstruktor einer Basisklasse. Und sollte sich bei er Initialisierung der Basisklassenattribute etwas ändern, nur an einer Stelle geändert werden muß. Bei Möglichkeit 2 müßte man in jeder abgeleiteten Klasse den Konstruktor vollständig implementieren, und bei jeder Änderung in JEDER abgeleiteten Klasse ändern = Arbeitsintensiv und fehleranfällig.

Fallen euch elegantere Methoden ein, um abstrakte Basisklassen mit finalen Attributen zu verwenden?

Ich verbleibe in der Hoffnung, mich einigermaße verständlich ausgedrückt und nicht allzu dumm gefragt zu haben :)

grüße nosek
 

Sonecc

Gesperrter Benutzer
Auch abstrakte Klassen können Konstruktoren besitzen.
Abstrakte Klassen können nur nicht instantiiert werden.
Dafür wird eine Nicht-Abstrakte Unterklasse benötigt.
Wird diese instantiiert, ruft sie automatisch den Konstruktor der abstrakten Oberklasse auf, womit deine Felder initialisiert werden können.
 
M

Marcinek

Gast
Abstrakte Klassen haben Konstruktoren.

Ich habe nicht weiter gelesen, weil ich denke, dass dein post sich damit beschäftigt dies zu Lösen.

Gruß,

Martin
 

Der Müde Joe

Top Contributor
>abstrakte Klassen haben keine Konstruktoren.

Wer sagt das?

Java:
public abstract class Person {

	public enum Gender {
		MALE, FEMALE
	};

	private final Gender gender;

	public Person(Gender gender) {
		this.gender = gender;
	}
}
 

nossek

Aktives Mitglied
Oh, jetzt hab ich erstmal zu tun!

Habe gestern versucht, einen Konstruktor in einer abstrakten Basisklasse zu implementieren und nur Schimpfe vom Compiler gekriegt. Noch mit nem Kumpel drüber gesprochen, der sich an sich gut auskennt und mir schon oft gut geholfen hat. Der meinte das geht nicht. Siehste, er weiß auch nicht alles!

Konstruktoren in abstrakten Basisklassen = Viiieeeel eleganter!

Ich probiere s nochmal...

Vielen Dank erstmal!

nossek
 

Der Müde Joe

Top Contributor
Java:
public abstract class Person {

	public enum Gender {MALE, FEMALE};

	private final Gender gender;

	public Person(Gender gender) {this.gender = gender;}
	
	static class Student extends Person {

		public Student(Gender gender) {
			super(gender); // <-- der muss einfach da sein ;-)
		}
	}
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
E 2 Probleme - Datum & private finale Variablen Java Basics - Anfänger-Themen 5
K Wieso muss man finale statische Variablen sofort oder eben im Konstruktor initialisieren? Java Basics - Anfänger-Themen 2
Luk10 Globale (semi-finale) Varibalen Java Basics - Anfänger-Themen 9
C Datentypen finale Variablen Java Basics - Anfänger-Themen 9
T Standardkonstruktor, Attribute initialisieren Java Basics - Anfänger-Themen 5
K wie kann ich alle Attribute von dem Objekt(pagode) ausgeben lassen ? Java Basics - Anfänger-Themen 3
S Attribute zurücksetzen? Java Basics - Anfänger-Themen 2
K Sichtbarkeit protected: Attribute trotzdem aufrufbar. Java Basics - Anfänger-Themen 4
B Attribute eines Objekts einer Klasse durch statische Methode einer 2. Klasse ändern? Java Basics - Anfänger-Themen 32
G Welche Attribute kommen in den Konstruktor? Java Basics - Anfänger-Themen 5
X Wie erreiche ich, dass ein Robot weitere Attribute hat, die nicht materialisiert sind, sondern nur über get/ set-Methoden simuliert sind? Java Basics - Anfänger-Themen 1
M Wie können Klassen nicht-materialisierte Attribute haben, die nur über get/ set-Mehoden simuliert sind? Java Basics - Anfänger-Themen 6
B Static Attribute in einer Klasse, wie geht das? :O Java Basics - Anfänger-Themen 19
O Attribute die Methoden zählen Java Basics - Anfänger-Themen 5
L Attribute aus Klasse in berechnungs Methode übergeben Java Basics - Anfänger-Themen 1
Gaudimagspam Attribute einfügen private Java Basics - Anfänger-Themen 3
J final attribute erben Java Basics - Anfänger-Themen 2
T Vererbung Verschiedene Attribute für vererbte Klassen Java Basics - Anfänger-Themen 4
B Infos zu Attribute in einer Klasse speichern Java Basics - Anfänger-Themen 3
S Objekt-Attribute "variabel" gestalten Java Basics - Anfänger-Themen 10
R Attribute mehrerer Objekte ausgeben Java Basics - Anfänger-Themen 3
D Abstrakte Klasse, Konstruktorkette, Attribute setzen Java Basics - Anfänger-Themen 12
L Zugriff auf Attribute eins Objekts über ActionListener Java Basics - Anfänger-Themen 4
F Attribute bei Objektorientierter Programmierung Java Basics - Anfänger-Themen 11
C unverständlicher Code Attribute ohne Datentyp, wie geht das? Java Basics - Anfänger-Themen 8
R Zwei Attribute gleichzeitig ausgeben Java Basics - Anfänger-Themen 12
Q Zugriff auf Attribute Java Basics - Anfänger-Themen 3
C Methoden Vererbung private Attribute/public Methoden Java Basics - Anfänger-Themen 4
I Abstrakte Klasse - static Attribute deklarieren Java Basics - Anfänger-Themen 14
S Zufallszahl (Statische Attribute und Methoden) Java Basics - Anfänger-Themen 10
K Public Attribute oder getter - funktioniert leider beides hier nicht Java Basics - Anfänger-Themen 5
X XML-Eintrag an Attribute erkennen Java Basics - Anfänger-Themen 2
W Erste Schritte füllen Attribute java Klasse in for Schleife und Array Java Basics - Anfänger-Themen 16
B Alle Attribute von Klasse bekommen und ändern Java Basics - Anfänger-Themen 12
R Objekt erstellen - Attribute mit mehreren Werten Java Basics - Anfänger-Themen 1
T Kann erbende Klasse Attribute der vererbenden Klasse anpassen (int -> float)? Java Basics - Anfänger-Themen 9
dat_vin OOP Hashmap und Attribute Java Basics - Anfänger-Themen 7
C OOP Array Objektverweise und Attribute Java Basics - Anfänger-Themen 5
S Klassen Zugriff auf Attribute einer zweiten Klasse, welche durch dritte gesettet wurden? Java Basics - Anfänger-Themen 2
O Unterschiedliche Attribute in Objekklasse? Java Basics - Anfänger-Themen 5
E Attribute von einem Objekt einer anderen Klasse ändern Java Basics - Anfänger-Themen 4
K Durch alle Attribute eines Objektes iterieren Java Basics - Anfänger-Themen 6
F Attribute von Feldinhalten erkennen Java Basics - Anfänger-Themen 6
A Variablen Attribute Java Basics - Anfänger-Themen 8
F konstante/variable Attribute? Java Basics - Anfänger-Themen 3
J Threads Zugriff auf Attribute Java Basics - Anfänger-Themen 16
M Wann statische Methoden/Attribute? Java Basics - Anfänger-Themen 2
ElfterDoktor Einen Objekt Attribute/Parameter geben & Auslesen Java Basics - Anfänger-Themen 4
R Zeigerfehler für Attribute Java Basics - Anfänger-Themen 11
L Vererbung Attributen der Oberklasse Attribute hinzufügen? Java Basics - Anfänger-Themen 3
S Ermitteln und Setzen der Attribute eines Objektes Java Basics - Anfänger-Themen 6
F Im Konstruktor mit Settern auf private Attribute zugreifen - oder nicht? Java Basics - Anfänger-Themen 18
P Zugriff auf Attribute einer Klasse, zu der keine Verbindung besteht Java Basics - Anfänger-Themen 11
V OOP Statische Klassen-Attribute vererben Java Basics - Anfänger-Themen 4
T Attribute eines anderen Objektes überprüfen und danach handeln Java Basics - Anfänger-Themen 7
M static Attribute und Vererbung Java Basics - Anfänger-Themen 11
S Warum sind Attribute der Klasse java.awt.Point public? Java Basics - Anfänger-Themen 3
K OOP Attribute von Klasse in die public class übertragen? Java Basics - Anfänger-Themen 7
E Fehler bei Klassenübergreifende Attribute / Konsturktoren Java Basics - Anfänger-Themen 2
P Attribute von Objekten in Vectoren überprüfen Java Basics - Anfänger-Themen 4
S Attribute darf nur Werte vom Intervall annehmen Java Basics - Anfänger-Themen 5
M Attribute Java Basics - Anfänger-Themen 8
M Attribute und Konstruktor Java Basics - Anfänger-Themen 5
V JNDI / LDAP Attribute eines Benutzers auslesen Java Basics - Anfänger-Themen 1
J Attribute not settable warum ? Java Basics - Anfänger-Themen 6
O Wie kann man das einfach lösen? (dynamisch viele Attribute) Java Basics - Anfänger-Themen 6
Q Zugriff auf Attribute einer Unterklasse Java Basics - Anfänger-Themen 7
S OOP Attribute Java Basics - Anfänger-Themen 2
T OOP StringTokenizer, Zuweisung der einzelnen Attribute Java Basics - Anfänger-Themen 21
K Klassen Attribute sortieren Java Basics - Anfänger-Themen 10
S Ausgabe bestimmter Attribute Java Basics - Anfänger-Themen 5
B die einzelnen Attribute einzeln vergleichen Java Basics - Anfänger-Themen 10
L E-Mail Attribute IMAP ändern Java Basics - Anfänger-Themen 4
K Attribute überschreiben! Java Basics - Anfänger-Themen 2
A Stilfrage: statische Methoden und Attribute auf jeden Fall verhindern? Java Basics - Anfänger-Themen 5
dataframe Attribute aus anderen Methoden übernehmen? Java Basics - Anfänger-Themen 14
M Zugriff auf Attribute über Methoden Java Basics - Anfänger-Themen 6
A statische Attribute: Vererbung und Zugriff darauf Java Basics - Anfänger-Themen 15
H Attribute auf Einzigartigkeit prüfen Java Basics - Anfänger-Themen 6
T Was sind Attribute? Java Basics - Anfänger-Themen 9
G Methode um Attribute auszulesen Java Basics - Anfänger-Themen 5
H attribute die zusammengehören Java Basics - Anfänger-Themen 9
G Wie kann ich auf die Attribute einer anderen Klasse zugreife Java Basics - Anfänger-Themen 5
J Auslesen aller Attribute mit JDOM Java Basics - Anfänger-Themen 15
N Unterschied statische Attribute u. Methoden <-> objekt Java Basics - Anfänger-Themen 4
M Attribute werden mit den Startwerten überschrieben. Warum? Java Basics - Anfänger-Themen 12
T Failed to load Main-Class manifest attribute from U.U.jar Java Basics - Anfänger-Themen 3
P Attribute Vererben Java Basics - Anfänger-Themen 2
Z Zugriff auf Attribute nach Zuweisung einer Referenz Java Basics - Anfänger-Themen 8
D Session Attribute in JSP ausgeben???? Java Basics - Anfänger-Themen 3
U Funktionale Interfaces mit mehreren abstrakten Methoden? Java Basics - Anfänger-Themen 8
L Klassen Kann eine Unterklasse einer abstrakten Klasse ein Interface implementieren? Java Basics - Anfänger-Themen 2
M Methoden Overloading in abstrakten Klassen Java Basics - Anfänger-Themen 26
F Probleme mit privaten Klassen (abstrakten Klassen) Java Basics - Anfänger-Themen 1
P OOP Sinn von abstrakten Klassen Java Basics - Anfänger-Themen 2
B in einem abstrakten Set ,Elemente einer einfache verkettete List epeichern Java Basics - Anfänger-Themen 13
G Methode einer Abstrakten Klasse aufrufen Java Basics - Anfänger-Themen 1
C Konstruktor in Abstrakten Klassen Java Basics - Anfänger-Themen 4
O Javadoc bei abstrakten Methoden Java Basics - Anfänger-Themen 1
M Frage zu Generics in Klassen, Abstrakten Klassen und Interfaces Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben