Archiv verlassen und diese Seite im Standarddesign anzeigen : [java] Vererbung
TrollSlayer
26-02-2004, 10:00
Hallo!
Meine Klasse soll von einer Klasse erben, die aber nur einen private-Konstruktor hat (dieser ist aber in der Kind-Klasse nicht sichtbar!). Geht das in Java?
Danke!
Nein, sowas geht (meines Wissens) nicht :(
TrollSlayer
26-02-2004, 11:23
Danke für die Antwort!
Original geschrieben von TrollSlayer
Hallo!
Meine Klasse soll von einer Klasse erben, die aber nur einen private-Konstruktor hat (dieser ist aber in der Kind-Klasse nicht sichtbar!). Geht das in Java?
Danke!
Bist Du sicher, dass es sich um einen privaten Konstruktor handelt? Man lernt ja bekanntlich nie aus, aber einen private constructor kann ich mir nicht vorstellen. Wie soll denn ein Element der Klasse initialisiert werden, wenn der Konstruktor nur innerhalb der Klasse aufgerufen werden kann?
Meist hat es aber einen Sinn, warum manche Methoden in der KindKlasse nicht sichtbar sind(bzw. einfach nicht mehr existieren). Wenn z.B. eine überschreibbare Methode diese Methode nutzt, braucht sie in der abgeleiteten Klasse nicht bekannt zu sein (da sie ja normalerweise nicht genutzt werden soll)
Die Klasse hat ausschlieslich private Konstruktoren? Dann geht's nicht.
Wenn die Konstruktoren nur protected sind ist's kein Problem, ebenso, wenn die Klasse wenigstens einen nicht-privaten Konstruktor hat.
Beispiel:
public class a {
private a(){}
public a(String s){..}
}
public class b extends a{
public b(){
super("bla");
}
}
@Sym
Das macht u.A. bei Enum-Klassen Sinn. Hier werden vordefinierte static public Instancen von der Klasse selber zur Verfügung gestellt.
Auch beim Factory-Pattern ist das mitunter Pflicht. Hier gibt's dann irgendwo eine Methode die eine Instanz der Klass zurückliefert.
Gruß
Rainer
Original geschrieben von Sym
Bist Du sicher, dass es sich um einen privaten Konstruktor handelt? Man lernt ja bekanntlich nie aus, aber einen private constructor kann ich mir nicht vorstellen. Wie soll denn ein Element der Klasse initialisiert werden, wenn der Konstruktor nur innerhalb der Klasse aufgerufen werden kann?
Meist hat es aber einen Sinn, warum manche Methoden in der KindKlasse nicht sichtbar sind(bzw. einfach nicht mehr existieren). Wenn z.B. eine überschreibbare Methode diese Methode nutzt, braucht sie in der abgeleiteten Klasse nicht bekannt zu sein (da sie ja normalerweise nicht genutzt werden soll)
Natürlich machen private Konstruktoren auch Sinn, z.B. beim Singleton-Pattern, wobei da aber meist ein protected und kein private bentutz wird.
fs111
TrollSlayer
27-02-2004, 17:18
Bist Du sicher, dass es sich um einen privaten Konstruktor handelt?
Ja. Es gibt nur einen Konstruktor und der ist private!
Wie soll denn ein Element der Klasse initialisiert werden, wenn der Konstruktor nur innerhalb der Klasse aufgerufen werden kann?
Dafür hat die Klasse eine getInstance()-Methode die eine Instanz dieser Klasse leifert.
sixfriends
28-02-2004, 14:25
Und warum legst du dann dein Klassenobjekt nicht über die getInstance() Methode an? Wäre das nicht am naheliegensten?
sixfriends
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.