Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Ich habe in Code von jemandem gesehen das er den Konstruktor einer Klasse protected gemacht hat.
Das würde ja bedeutet das man in einem anderen Package als die Klasse liegt, kein Objekt erzeugen kann.
Aber wenn man nun in einem anderen Package ist, und man leitet eine Klasse von dieser Klasse ab, dann kann man von der neuen Klasse ja kein Objekt erzeugen, weil der Konstruktor der Basisklasse nicht aufgerufen werden kann weil er protected ist.
Also ich sehe da keinen Unterschied ob man einem Konstruktor jetzt Package Access gibt oder protected.
Was meint ihr?
-Package Access bedeutet, dass das Objekt nur von Klassen aus demselben Package erzeugt werden kann. Eine Anwendung kann im Factory-Entwurfsmuster liegen.
-Protected Access: Die Klasse muss abgeleitet werden, sodass die Unterklasse Zugriff auf den Konstruktor bietet. Bissl seltsam ist es schon, denn der Konstruktor lässt sich ja jederzeit als public deklarieren, eben durch Ableiten.
Vielleicht kann ein erfahrener Programmierer ein klassisches Anwendungsbeispiel nennen.
-Package Access bedeutet, dass das Objekt nur von Klassen aus demselben Package erzeugt werden kann. Eine Anwendung kann im Factory-Entwurfsmuster liegen.
-Protected Access: Die Klasse muss abgeleitet werden, sodass die Unterklasse Zugriff auf den Konstruktor bietet. Bissl seltsam ist es schon, denn der Konstruktor lässt sich ja jederzeit als public deklarieren, eben durch Ableiten.
Vielleicht kann ein erfahrener Programmierer ein klassisches Anwendungsbeispiel nennen.
genau, wenn man die klasse ableiten muss damit man sie verwenden kann wäre es doch einfacher sie einfach als abstract du deklarieren anstatt den Konstruktor protected zu machen, oder verstehe ich da was falsch?
Der Code in dem ich das gesehen habe stammt übrigens aus einer Klasse der Java Standard Library (weis leider nicht mehr wo ich das gesehen hab), und die müssen ja eigentlich wissen was sie tun...
und man leitet eine Klasse von dieser Klasse ab, dann kann man von der neuen Klasse ja kein Objekt erzeugen, weil der Konstruktor der Basisklasse nicht aufgerufen werden kann weil er protected ist.
ist falsch, was ja durch die übersicht, in der geschrieben steht: "Modifier: protected / Zugriff von Unterklasse, anderes Paket: ja" geschrieben steht, wiederlegt wird, und somit die Frage
mouk hat gesagt.:
Also ich sehe da keinen Unterschied ob man einem Konstruktor jetzt Package Access gibt oder protected.
wenn man die klasse ableiten muss damit man sie verwenden kann wäre es doch einfacher sie einfach als abstract du deklarieren anstatt den Konstruktor protected zu machen
der konstruktor wurde ja nicht protected deklariert, um zu erzwingen, dass die klasse abgeleitet wird.
jenachdem wie besagte klasse benutzt wird, kann man sie halt auch nicht einfach so abstrakt deklarieren.
genau, wenn man die klasse ableiten muss damit man sie verwenden kann wäre es doch einfacher sie einfach als abstract du deklarieren anstatt den Konstruktor protected zu machen, oder verstehe ich da was falsch?
genau, wenn man die klasse ableiten muss damit man sie verwenden kann wäre es doch einfacher sie einfach als abstract du deklarieren anstatt den Konstruktor protected zu machen, oder verstehe ich da was falsch?