Datenkapselung

Diskutiere Datenkapselung im Java Basics - Anfänger-Themen Bereich.
C

Codix

Das ist nicht die Antwort auf die Frage. Die Frage war, ob du auf die Instanzvariablen von "Elefant" aus dem Package "meinetests" zugreifen kannst.

Im einfachsten Fall lautet die Antwort Ja oder Nein. In deinem Fall kommt noch eine Begründung dazu, warum es so ist.
ich habe doch geantwortet: mit Ja. Und die Begründung gebracht. Wo liegt jetzt das Problem?
 
C

Codix

Das ist nicht die Antwort auf die Frage. Die Frage war, ob du auf die Instanzvariablen von "Elefant" aus dem Package "meinetests" zugreifen kannst.

Im einfachsten Fall lautet die Antwort Ja oder Nein. In deinem Fall kommt noch eine Begründung dazu, warum es so ist.
Antwort:

JA

wenn wir folgende Modifizierer wählen:
public = wir können von überall zugreifen.
protected = wir könnten von einer Unterklassen aus einem anderen Paket auf die Variablen zugreifen.

package & private nutzen uns hier nichts.
 
T

temi

Antwort:

JA

wenn wir folgende Modifizierer wählen:
public = wir können von überall zugreifen.
protected = wir könnten von einer Unterklassen aus einem anderen Paket auf die Variablen zugreifen.

package & private nutzen uns hier nichts.
Die Antwort ist falsch.

Korrekte Antwort:
Nein. Die beiden Instanzvariablen der Klasse Elefant sind beide package-private. Der Zugriff ist nur aus der eigenen Klasse und aus Klassen im gleichen Package möglich. Da sich die andere Klasse im Package "meinetests" befindet kann sie nicht direkt auf die Instanzvariablen zugreifen.
 
C

Codix

Die Antwort ist falsch.

Korrekte Antwort:
Die Antwort ist falsch.

Korrekte Antwort:
@Nein. Die beiden Instanzvariablen der Klasse Elefant sind beide package-private. Der Zugriff ist nur aus Kindklassen oder aus Klassen im gleichen Package möglich. Da sich die andere Klasse im Package "meinetests" befindet kann sie nicht direkt auf die Instanzvariablen zugreifen.


D.h. wir müssen immer über den Modifizierer der Klasse gehen, wenn bei den Instanzvariablen keine Modifizierer dabei stehen?
 
T

temi

@Nein. Die beiden Instanzvariablen der Klasse Elefant sind beide package-private. Der Zugriff ist nur der eigenen Klasse oder aus Klassen im gleichen Package möglich. Da sich die andere Klasse im Package "meinetests" befindet kann sie nicht direkt auf die Instanzvariablen zugreifen.


D.h. wir müssen immer über den Modifizierer der Klasse gehen, wenn bei den Instanzvariablen keine Modifizierer dabei stehen?
Nein. Die Klasse ist weiterhin public und hat nicht direkt etwas mit dem Modifizierern der Instanzvariablen zu tun, sonst wären sie ja sichtbar und deine Antwort wäre richtig gewesen.

Es gibt folgende Modifizierer:

private, (package-private), protected, public

Der Modifizierer package-private steht in Klammern, weil man ihn nicht angeben muss (bzw. kann). Steht kein Modifizierer vor der Klasse/Instanzvariable/Methode dann ist sie package-private.
 
C

Codix

jetzt muss noch die Frage 2 & 3 beantwortet bzw. die Antwort korregiert werden.
 
C

Codix

Mach das. Du hast ja viele Hinweise erhalten. Du kannst gerne noch mal nachfragen, wenn du soweit bist, dann können wir Unklarheiten noch beseitigen.
@temi 2Antwort auf die 2.te Aufgabe: welche ist die beste Möglichkeit? protected, public oder getter?
Begründung: Also ich finde public am besten. Weil wir mit public aus derselben Klasse, demselben Paket, der Unterklasse im gleichen Paket und der Unterklasse im anderen Paket auf die Variablen zugreifen können. Von überall.
TOP 1 = public.
Was sagst du hierzu? @ Temi.

===

3.te Aufgabe: es muss heissen: protected oder public Ziege heissen. So kann man auf die Instanzvariable Ziege zugreifen.

mehr fällt mir hierzu nicht ein.

Hat die Antwort etwas mit der Veränderung des Konstruktors zu tun? z.B. new Ziege(23,'w');

Bitte um eine Antwort.
 
J

JustNobody

Also zu 2: Das Topic ist doch die Datenkapselung. Wenn Du ein Feld public machst, dann hebst Du die Kapselung komplett auf. Also nicht gut.
Und es kann auch nicht zwischen lesendem und schreibendem Zugriff unterschieden werden.

Zu 3: Da wirfst Du Begriffe durcheinander. Ich sehe keine Instanzvariable Ziege, daher kann deine Antwort nur falsch sein. :)

Aber ja: wenn der Konstruktor private ist, dann kann von außen nicht auf den Konstruktor zugegriffen werden. Damit Instanzen der Klasse erzeugt werden können, muss der Konstruktor zugreifbar sein. Du erwähnst protected und public. Wie sind da jeweils die Zugriffsmöglichkeiten? Und welche erlauben den geforderten Zugriff ("in einem Quelltext in einem anderen Paket")?

Und ist der text bzgl. Datentyp char aus dem ersten Post noch irgendwie akut? Oder hast Du das selbst schon gestrichen oder wurde das im Thread bereits behandelt?
 
C

Codix

Also zu 2: Das Topic ist doch die Datenkapselung. Wenn Du ein Feld public machst, dann hebst Du die Kapselung komplett auf. Also nicht gut.
Und es kann auch nicht zwischen lesendem und schreibendem Zugriff unterschieden werden.

Zu 3: Da wirfst Du Begriffe durcheinander. Ich sehe keine Instanzvariable Ziege, daher kann deine Antwort nur falsch sein. :)

Aber ja: wenn der Konstruktor private ist, dann kann von außen nicht auf den Konstruktor zugegriffen werden. Damit Instanzen der Klasse erzeugt werden können, muss der Konstruktor zugreifbar sein. Du erwähnst protected und public. Wie sind da jeweils die Zugriffsmöglichkeiten? Und welche erlauben den geforderten Zugriff ("in einem Quelltext in einem anderen Paket")?

Und ist der text bzgl. Datentyp char aus dem ersten Post noch irgendwie akut? Oder hast Du das selbst schon gestrichen oder wurde das im Thread bereits behandelt?

Danke @ JustNobody

Ziege ist keine Instanzvariable, das ist richtig. Ziege ist eine Klasse (in dem Fall).

public: Zugriff von überall möglich.

protected: Wir können aus derselben Klasse, demselben Paket, der Unterklasse im gleichen Paket und der Unterklasse im anderen Paket auf den code zugreifen.

Sollen wir den modifizierer des Konstruktors auf public ändern?

char. darüber haben wir diskutiert. Ich denke, dass char auf int geändert werden muss.

Was denkst du @ JustNobody
 
Thema: 

Datenkapselung

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben