2010-03-21 7 views
7

Okay, so, ich habe diese Struktur Projekt:Warum können Unterpakete keine privaten Paketklassen anzeigen?

Paket AB

  • Klasse SuperClass (diese Klasse markiert Paket privat)

Paket ABC

  • Klasse SubClass (erbt von der Superklasse)

Ich würde lieber nicht SuperClass öffentlich sichtbar machen ... Es ist wirklich nur eine Utility-Klasse für dieses spezielle Projekt (A.B).

Es scheint mir, dass SubClass SuperClass sehen kann, weil Paket A.B.C ein Unterpaket von A.B ist ... aber das ist nicht der Fall.

Was wäre der beste Weg, um dieses Problem zu lösen? Ich denke nicht, dass es Sinn macht, alles in ABC auf AB zu verschieben oder AB nach ABC zu verschieben. Hauptsächlich weil es wahrscheinlich einen ABD geben wird, der auch von AB erbt ...

Ich bin ein wenig neu in Java, also sei nett: D (ich bin ein C++ - und .NET-Typ)

Antwort

9

Pakete sind eindeutige Bezeichner. Sie können sie nicht dazu bringen, den Vererbungsregeln zu folgen. Package und SubPackages sind nicht analog zu Super- und Sub-Klassen.

Ich sehe keine Fehler bei der Herstellung der Klasse, die Sie im Unterpaket verwenden wollten, um für die Außenwelt sichtbar zu sein. Mich würde interessieren, wie dieses Kriterium in C++/.net gehandhabt wird.

+0

Yeah ich irgendwie dachte, ich war nur Missverständnisse Pakete – Polaris878

+2

In .NET würde ich nur die Klassen in Ordnern und habe sie als interne :) – Polaris878

+0

@ Polaris878: Nice. – bragboy

6

Ihre beste Wette ist, den (Standard) Erbauer von SuperClass als protected zu erklären. Auf diese Weise können nur Klassen in demselben Paket und Unterklassen unabhängig von dem Paket es instanziieren und daraus erweitern.

-1

Warum nicht in die gleiche Paket-Ebene?

Könnten Sie irgendwie Zusammensetzung statt Vererbung verwenden? Ich habe versucht, selbst mehr davon zu tun, nachdem ich Effektives Java gelesen habe. Ich bin mir nicht sicher, ob dies bei Ihren Bedürfnissen möglich ist, aber es lohnt sich, darüber nachzudenken.

Viel Glück.

+1

Ich will sie nicht in der gleichen Paket-Ebene, weil ich etwa 20-30 Klassen haben wird, die auf die Super-Klasse verlassen werden, und ich versuche, die Dinge organisiert lol zu halten. – Polaris878

Verwandte Themen