edit: Ich habe Eclipse immer nur zum Programmieren von Java verwendet, daher hängt alles Folgende (und all mein Wissen über Java) davon ab, wie Java in dieser Umgebung programmiert ist.Vererbung und Sichtbarkeit über Projekte hinweg
Ich habe zwei Eclipse-Projekte: Projekt Ein mit Klasse X und Projekt B mit Klasse Y. Class Y aus Projekt B erstreckt Klasse X vom Projekt A.
public class Y extends X // In short B is dependent on Project A
Klasse X ist public
und es hat eine verschachtelte Klasse O.
public class X {
class O { // default access modifier
}
}
In meinem Setup, Klasse Y kann O so lange instanziiert als O nicht private
ist. Bedeutung, auch wenn O hat einen Standardzugriffsmodifikator, Y kann immer noch zugreifen O Mitglieder und Variablen. Das ist verwirrend für mich, weil ich dachte, Standardklassen bedeuteten, dass fremde Klassen nur dann Zugriff darauf hätten, wenn sie ein gemeinsames Paket hätten.
Also die Schlussfolgerung, die ich daraus erhalte, ist, dass das Standardpaket in jedem Projekt gleich oder in irgendeiner Weise verbunden sein muss. Habe ich recht, wenn ich das denke? Und wenn das zutrifft, werden Änderungen, die im Paket eines Projekts gemacht werden, auf dem Paket in dem anderen reflektiert?
Und das stellt das Hauptproblem dar, mit dem ich mich beschäftige. Ich möchte den Zugang zu Klasse steuern O, so dass in meinem Beispiel, ich will Y-nicht der Lage sein, O zu instanziiert. Ich kann das jetzt nur tun, indem ich die Sichtbarkeit von O auf privat setze, aber dies schränkt auch andere Klassen desselben Projekts (Projekt A) davon ab, auf O zuzugreifen. Ich will Klasse Y von Projekt B (was ich dachte, hatte ein anderes Paket von Projekt A) nicht Lage seiner O zuzugreifen, aber eine andere beliebige Klasse aus dem selben Projekt als Y/O zu haben Zugang zu O ohne Probleme. Wie kann ich das machen?
Vorsicht, es gibt kein Projektkonzept in der Sprache Java. Sichtbarkeit gilt, soweit Pakete. – Savior
Oh, ich verweise auf Eclipse speziell – Manuel
Sie können nicht von Fall zu Fall Einschränkung der Sichtbarkeit. Der Standardzugriffsmodifikator gibt Klassen im selben Paket Zugriff; Wenn Sie möchten, dass _Y_ nicht auf _O_ zugreifen kann, ziehen Sie in Betracht, _Y_ in ein anderes Paket zu verschieben. – Jire