2016-03-22 14 views
0

Ich habe ein Problem damit zu verstehen, wie die folgenden Methoden funktionieren. Ich habe Klasse Calc und Methode für die Multiplikation, erste Methode verwenden typische Getter, zweite Methode kann direkt auf private Attribut mit Typ Konvertierung zugreifen. Meine Frage ist, wie es möglich ist, dass Nummer1 Zugriff auf private Attribut Nummer2 haben.Java-Zugriff auf Member mit Typkonvertierung

private int number; 

public Calc multiplication(Calc z) 
{ 
     return new Calc(this.number*z.getNumber()); 
} 

public Calc multiplication(Calc z) 
{ 
     return new Calc(this.number*((Calc)z).number); 
} 

test() 
{ 
number1 = new Calc(2); 
number2 = new Calc(3); 
number1.multiplication(number2); 
} 
+0

So funktioniert Access Modifiers in Java. Sie sind nicht die erste Person, die kommentiert, dass dies wohl ein bisschen seltsam ist. Übrigens müssen Sie 'z' nicht auf' Calc' anwenden - es ist bereits 'Calc'. –

+0

z ist bereits ein Calc warum Verwendung von Typ als ((Calc) z) gegossen? –

+1

Ich rufe Shenanigans, das kann nicht mit zwei Methoden mit genau der gleichen Signatur wie das kompilieren. –

Antwort

5

Von Java Tutorials:

Der private Modifikator gibt an, dass das Element nur in seiner eigenen Klasse zugegriffen werden.

Es spielt keine Rolle, ob das Mitglied zu einer anderen Instanz derselben Klasse gehört. Solange die Klasse gleich ist, haben Methoden in einer Instanz Zugriff auf private Mitglieder einer anderen Instanz.

0

Hier Nummer 1 Objekt Referenz ist nicht direkt Zugriff auf Nummer Variable, aber es greift mit Hilfe von Nummer 2 Objektreferenz und umgekehrt.

Der private Modifikator gibt an, dass das Element nur in seiner eigenen Klasse

es keine Rolle spielt nicht zugegriffen werden, wenn das Mitglied in eine andere Instanz derselben Klasse gehört. Solange die Klasse gleich ist, haben Methoden in einer Instanz Zugriff auf private Mitglieder einer anderen Instanz.

Verwandte Themen