private Instanzvariable
-
Hallo,
ich habe ein Verständnisproblem mit dem 2. Konstruktor der folgenden Klasse.
Dem Konstruktor wird eine Referenz auf ein Bruchobjekt übergeben. Für die Methode ist das ja jedoch ein fremdes Objekt. Warum kann ich trotzdem einfach
auf die 2 Instanzvarialben zugreifen, obwohl beide private sind?public class Bruch
{
private int zaehler;
private int nenner;Bruch()
{
zaehler = 0;
nenner = 0;
}//--------------------------------------------------------
Bruch(Bruch b)
{
zaehler = b.zaehler; // Warum kann ich hier auf ne private Var. zugreifen?
nenner = b.nenner; // -"-
}}
-
Hi
Die Frage ist berechtigt so wie ich das gelernt habe sollte das nicht funktionieren aber geht trozdem.
Das liegt da dran das der Konstruktor einen Bruch als übergbabe Parameter bekommt, da du dich in der Klasse Bruch befindest kannst du auch somit direkt die private Variablen ansprechen.
Mich würde auch interessieren warum die von SUN sowas gemaht haben.P.S: <compi> Kann es sein das du an der FH-Käön Abtl.Gummersbach studierst.
BYE
-
Vielen Dank für deine Hilfe.
Ich gebe dir absolut recht - dieses Verhalten finde ich nicht logisch. Für die Methode ist b ein "fremdes" Objekt - folglich sollte es nicht auf private (oder protected) Variablen des Fremdobjekts zugreifen dürfen.
Ich merke mir jetzt einfach das Klassen untereinander auf alles zugreifen können. Etwas unkonsequent finde ich es dennoch.Bis dann,
floPS: Ich studiere an der FH Rosenheim Informatik. Du lagst also garnet so falsch
-
-
Original erstellt von CoTech:
**Mich würde auch interessieren warum die von SUN sowas gemaht haben.
**Damit man Dinge wie Kopierkonstruktoren schön machen kann, die problemlos den internen Zustand kopieren können und so ein Duplikat liefern
-
Es geht ja darum, dass du als Implementierer der Klasse ja weißt (wissen solltest), wie sie aufgebaut ist und intern arbeitet.
Der Endbenutzer deiner Klasse soll sich aber nicht damit herumplagen müssen, weshalb es privat gibt. Das ist sozusagen eine Implementierer/Benutzer Trennung
-
Hallo
Noesis da hast du schon Recht der Implementierer der Klasse kennt ja seine eingene Klasse.
Damit man Dinge wie Kopierkonstruktoren schön machen kann, die problemlos den internen Zustand kopieren können und so ein Duplikat liefern
Copy Konstruktor unter Java gibt es doch net dachte ich. Das wird es doch über Clone realisiert. Ausserdem kann man die sachen auch mit getXXXX() Methoden realisieren also warum nun jetzt sowas.
<compi> Wie haben die selbe Aufgabe gehabt eine Klasse für Brüche zu schreiben. Ich wette mit dir nächstes Jahr verlangen die das man eine Klasse für Imaginäre Zahlen schreibt also bei uns war das so.
BYE