geschützte Daten in der abstrakten Klasse

Meine Frage betrifft speziell Java, abstrakte Klassen und die Verwendung geschützter Daten. Ich bin seiend sagte, dass alle Daten sollten private und protected Getter/setter verwendet nur.

Nun, ich verstehe, wir wollen die Schild-Daten aus der direkten manipulation von Gelegenheits-Benutzer der Klasse, und, dass die öffentlichen Daten der Mitglieder im Allgemeinen für eine fragwürdige Praxis. Ich sah Sie an "Java-geschützte Felder vs public Getter" ( Java-geschützte Felder vs public Getter ), aber ich bin immer noch bedenklich, dass:

protected int i;  

ist schlimmer in einer abstrakten Klasse als:

private int i;  
protected int geti();  
protected void seti(int j); 

Ich bin einfach nicht sehen, die Seite nach unten, wenn die abstrakte Klasse gibt es genau geben Eltern/gemeinsame Einrichtung, um die Kinder Klassen, und der geschützte Bereich ist gedacht, um Zugang zu den Kindern, während der Schutz der Daten von Gelegenheits-Benutzer. I Hinweis in der Frage oben verwiesen wird, dass die meisten Antworten scheinen, die Frage zu klären, warum Daten in der Regel privat statt öffentlich. Ich versuche mich zu konzentrieren meine Frage speziell auf die vorhandenen Daten in einer abstrakten, übergeordneten vorgesehen für den Gebrauch durch die Kinder. Der einzige vernünftige Kommentar, den ich gehört habe bisher ist, dass mit den Eltern zu geschützten Daten (z.B. int i oben) Blättern Sie mit code in der Kind-Klasse, die auf eine variable nicht deklariert, in die Kind-Klasse. Weniger überzeugend ist das argument (siehe Gemeinsame geschützten Daten-member in der Basisklasse? ), die Sie möglicherweise ändern möchten, die Zugriff auf einige Tage, und jetzt haben Sie zu Ehren Ihrer Schnittstelle. Dies ist eine abstrakte Klasse, und soll erweitert werden, 100% der Zeit.

Dank! Spezifische Titel/Seite# Verweise auf Bücher sind weit mehr hilfreich ist, dass Verweise auf " ... alle grundlegenden Java-Programmierung text..."

========================================== 10-13-2010
Dies war, wie vieles, eine Frage zu abstrakten Klassen, als es sich um geschützte Daten. Ich finde es enttäuschend, dass der Fokus scheint sich verlagert zu haben, in den Antworten, ob Daten versteckt, ist eine gute Sache in OOP (Antwort: ja). Es gibt eine Menge von Tiefe, die hier mit der Natur der abstrakten Klasse, und wie unterscheidet es sich von einem normalen nicht-Finale Klasse, und welche möglichen Vorteile könnte es für die Festsetzung der Namen und Typen von Daten-Elemente, die in der abstrakten Eltern-für die Nutzung durch das Kind-Klassen. Ich denke, dass hier die Möglichkeit besteht, für innovation und eine bessere Kontrolle erweitert, unten, von der abstrakten Eltern-zu der Umsetzung der Kind-Klassen. Ich bin besorgt darüber, dass die Allgemeinen Grundsätze, wie Sie die Vorteile des data-hiding, kann dogma geworden, und hemmen die innovation und die Entwicklung von neuen mustern und Ideen.

Danke an alle, die dazu beigetragen haben.

InformationsquelleAutor der Frage cvsdave | 2010-08-19

Schreibe einen Kommentar