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.
Ok ich bin extremst verwirrt grad... Mal angenommen ich hab folgende Klasse:
Java:
public class TestJava {
public TestJava(){}
private void privateMethode(){}
public void test(TestJava test){
test.privateMethode();
}
}
Wieso zum Henker meckert da Eclipse nicht? Keine Compiler-Warnung, nix... Das ist doch ne private Methode die ich da aufrufen will. Früher ging das jedenfalls nicht... was ist passiert? ???:L
Das ging immer. Du kannst private Methoden nur aus der selben Klasse aufrufen. Und das tust du doch auch.
Wenn du nicht mal das könntest, dann wären private Methoden dead-code.
Vielleicht wirds deutlicher wenn ich den Code etwas abänder:
Java:
public class TestJava {
public TestJava(){}
private void privateMethode(){}
public void test(TestJava anderesObject){
anderesObject.privateMethode();
}
}
So... Ich greife doch auf eine private methode des Objekts "anderesObject" zu und das darf eigentlich nicht klappen. Schließlich befinde ich mich in einer anderen Klasse, ob diese Klasse vom selben Typ ist, ist dabei doch völlig egal... ;(
Private Eigenschaften sind nur für andere Klassen privat, aber nicht für die eigene, auch wenn die Objekte unterschiedlich sind. Das ist eine Art Spezialfall, dass über eine Referenzvariable der Zugriff auf eine private Eigenschaft eines anderen Objekts erlaubt ist.
Krass, dann ist mir das bisher nie aufgefallen. Ich hätte nicht gedacht, dass das erlaubt wäre. Death-Code wärs selbstverständlich nicht, schließlich kann die Klasse selbst ja diese Methoden nutzen, halt nur kein anderes Objekt als die Klasse selbst.
Doch es wäre dead-code, denn in deinem Beispiel BIST du in der Klasse! Du kannst nicht noch mehr in dieser Klasse sein, als du schon bist, denn du beschreibst da gerade die Methode dieser Klasse.
public class TestJava {
public TestJava(){}
private void privateMethode(){}
public void test(TestJava anderesObject){
anderesObject.privateMethode();
this.privateMethode();
}
}
Es gibt doch wohl nen unterschied zwischen Zeile 7 und 8. Das Zeile 8 kein Problem darstellt ist mir vollkommen klar. Aber wenn Zeile 7 hier nicht ginge (wegen Sichtbarkeiten) dann wäre privateMethode() kein Dead-Code, sondern eben nur aus dieser Klasse nutzbar...
Das verbinde ich mit "von außen NICHT sichtbar".
Innerhalb der Klasse ist private sichtbar.
Was die Sorgen macht, ist, dass du innerhalb eines Objekts ein anderes zugreifbar hast.
Da beide Objekte von der gleichen Klasse sind, ist es aber legal
In Zeile 7 greifst du auf die Methode "privateMethode()" vom Objekt "anderesObject" zu, dass ja ebenfalls von der Klasse TestJava ist. Und deshalb kannst du die Methode dort ebenfalls aufrufen.