private Frage

Status
Nicht offen für weitere Antworten.

Spin

Top Contributor
Hallo liebe leute:

Ich habe eine aufgabe bekommen.:

Zeigen Sie das der Zugriff auf als private deklarierte Elemente aus der Testklasse möglich, aus der abgeleiteten Klasse aber nicht mgl ist.


Code:
public class ErweitertesAuto extends EinfachesAuto {

   /*Überprüfung Zugriff*/
   // Methoden in der Abgeleiteten Testklasse können durch Objekt aufgerufen werden (public)
   // Private deklarierte Variablen können hier nicht aufgerufen werden
   // Entwicklungsumgebung zeigt einen durch Objekt (Punktnotation) , alle verfügbare werte + Methoden

In einer abgelieteten Klasse kann durch ein Objekt die Methoden aufrufen, die ich ja vorher als public deklariert habe.
Set und get sind ja immer public ..mit den kann ich ja denn auf meine privaten Variablen denn zu greifen.








Code:
public class EinfachesAutoTest {

    /**
     * @param args the command line arguments
     */
   
  
    public static void main(String[] args) {
        
        /*Überprüfung Zugriff*/
        // Zugriff auf privat deklarierte Variablen mgl.
        
          
         EinfachesAuto a = new EinfachesAuto();


Aber in meiner Testklasse kann ich die privaten auch nicht aufrufen. Sondern auch nur die Methoden. Nun frag ich mich , ob das überhaupt geht!

danke für die antort , gruß spin



hier nochmal um zu zeigen dass es mit aufruf der methoden geht ;)
Code:
 */
public class EinfachesAutoTest {

    /**
     * @param args the command line arguments
     */
   
  
    public static void main(String[] args) {
        
        /*Überprüfung Zugriff*/
        // Zugriff auf privat deklarierte Variablen mgl.
        
          
         EinfachesAuto a = new EinfachesAuto();
         a.setFahrer("Stephan");
         a.setAutotyp("VW");
         a.setFarbe("Grau");
         a.setErstzulassung(1990);
         a.setKmStand(190000);
         a.setleistung(19);

         
          
        System.out.println("Fahrer: " + a.getFahrer() +
                           "\n" + "Autotyp: " + a.getAutotyp() +
                           "\n" +"Farbe des Autos: " + a.getFarbe() +
                           "\n" +"Erstzulassung: " + a.getErstzulassung() +
                           "\n" +"Leistung: " + a.getleistung() +
                           "\n" +"Kilometerstand: " + a.getKmStand()
                          );
    
        
   
        

       

        // TODO code application logic here
    }

}
 

hdi

Top Contributor
Sorry ich hab mir deinen Post 2x durchgelesen und frag mich noch immer:
Was ist eigentlich deine Frage?

Also: Als private deklarierte Klassen-Variablen sind nur in dieser Klasse sichtbar.
Also auch nicht in abgeleiteten Klassen.

Wenn du aber in der Klasse public Methoden bereitstellst, um diese private Attribute
zu ändern, dann kannst du diese Methoden überall aufrufen. Also in der abgeleiteten
Klasse als auch jeder x-beliebigen anderen Klasse.

War dir das eine Hilfe? Oder was meintest du?
 

Spin

Top Contributor
Naja ich denke soweit war ich nun auch schon, aber danke dass du dir die Mühe gemacht hast.

Das heißt man kann nur die Methoden die public deklariert wurden in anderen Klassen aufrufen.
Die private deklariert wurden sieht man nur in der eigenen klasse.


Ich habe eine Idee:

In meiner Testklasse kann ich Variablen aufrufen die protected deklariert wurden, aber nicht private.

Fazit: Keine andere Klasse kommt an private deklarierte Methoden oder Variablen ran, ohne set und get.

Rihtig?
 

hdi

Top Contributor
Richtig. Nur der Vollständigkeit halber sei aber erwähnt: Abgeleitete Klassen besitzen auch die
private Attribute der Vaterklasse, nur kann man ohne getter nicht darauf zugreifen.

In meiner Testklasse kann ich Variablen aufrufen die protected deklariert wurden, aber nicht private.

Ist richtig, aber Unsinn. protected ist genauso Quatsch wie public.
Der einzige Unterschied zwischen den beiden ist, dass protected nur innerhalb des Packages sichtbar ist.
D.h. wenn alle deine Dateien im gleichen Package liegen (was bei kleineren Programmen eigentlich immer
der Fall ist), könntest du genauso public schreiben.

Gewöhn dir das ab... Man verwendet nur private Attribut und baut dafür Getter und Setter.

PS: Bitte kommt mir jetz keiner mit einem Bsp, dass protected oder public auch mal Sinn machen kann.
Mag sein, aber das sind Extremfälle.
 

The_S

Top Contributor
@Threadsteller

Hm ... ich könnte dir das Gegenteil beweisen, falls das hilft (also DASS man von einer erbende Klasse (oder von egal welcher anderen Klasse) auf die privaten Attribute und Methoden zugreifen kann) :-D

@hdi

Bitte was? protected und public werden nie benötigt??? Ich hatte dich eignetlich als guten Entwickler in Erinnerung ...
 

ARadauer

Top Contributor
Vollständigkeitshalber... es gibt Möglichkeiten von aussen auf private Member zuzugreifen... zb über Reflection, aber das sollte nur in Ausnahemfällen benutzt werden...
 

The_S

Top Contributor
ARadauer hat gesagt.:
Vollständigkeitshalber... es gibt Möglichkeiten von aussen auf private Member zuzugreifen... zb über Reflection, aber das sollte nur in Ausnahemfällen benutzt werden...

Hab ich ja oben schon angesprochen:

Code:
public class TestSuper {

	private int aVar = 3;
	
	public void printAVar() {
		System.out.println(aVar);
	}
}

Code:
import java.lang.reflect.Field;

public class TestChild extends TestSuper {

	public void changeAVar(int newVar) throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException {
		
		Field f = TestSuper.class.getDeclaredField("aVar");
		f.setAccessible(true);
		f.set(this, 10);
	}
	
	public static void main(String[] args) throws SecurityException, IllegalArgumentException, NoSuchFieldException, IllegalAccessException {
		
		TestChild ts = new TestChild();
		ts.printAVar();
		ts.changeAVar(10);
		ts.printAVar();
	}
}
 

Templon

Bekanntes Mitglied
hdi hat gesagt.:
Der einzige Unterschied zwischen den beiden ist, dass protected nur innerhalb des Packages sichtbar ist.

Nur der Vollständigkeit halber sei aber erwähnt: In Verbindung mit Vererbung sind protected Member/Methoden auch in einem anderen Package sichtbar =)

PS @ hdi, hast du meine PN gelesen? =)
 

hdi

Top Contributor
hdi hat gesagt.:
PS: Bitte kommt mir jetz keiner mit einem Bsp, dass protected oder public auch mal Sinn machen kann.
Mag sein, aber das sind Extremfälle.
Hobbit_Im_Blutrausch hat gesagt.:
@hdi
Bitte was? protected und public werden nie benötigt??? Ich hatte dich eignetlich als guten Entwickler in Erinnerung ...
:roll:
...also ich bezog mich im Übrigen ausschliesslich auf die Member-Variablen, ja.

@Templon:
Ja hab gelesen war bisher zu faul xD Danke aber
 

manuche

Bekanntes Mitglied
Wieso sollten Membervariablen nur in Ausnahmefällen mit protected deklariert werden??? Das kommt drauf an, was du damit vor hast und ob die erbende Klasse evtl Methoden überschreibt und dann auf Membervariablen zugreifen muss!
 

Ebenius

Top Contributor
manuche hat gesagt.:
Wieso sollten Membervariablen nur in Ausnahmefällen mit protected deklariert werden??? Das kommt drauf an, was du damit vor hast und ob die erbende Klasse evtl Methoden überschreibt und dann auf Membervariablen zugreifen muss!
Die Regel lautet: Eine Member-Variable ist private, es sei denn, man hat einen guten Grund es anders zu machen.
 
V

Vayu

Gast
ARadauer hat gesagt.:
Vollständigkeitshalber... es gibt Möglichkeiten von aussen auf private Member zuzugreifen... zb über Reflection, aber das sollte nur in Ausnahemfällen benutzt werden...

also ich finde, das sollte NIE benutzt werden. private ist private und hat private zu bleiben, finds eh n unding, dass das überhaupt geht in Java ...
 

Ebenius

Top Contributor
Vayu hat gesagt.:
ARadauer hat gesagt.:
Vollständigkeitshalber... es gibt Möglichkeiten von aussen auf private Member zuzugreifen... zb über Reflection, aber das sollte nur in Ausnahemfällen benutzt werden...

also ich finde, das sollte NIE benutzt werden. private ist private und hat private zu bleiben, finds eh n unding, dass das überhaupt geht in Java ...

Sag niemals nie. Hab ich schon ein paar mal angewendet. Nicht weil ich wollte, sondern weil ich musste um Workarounds für Bugs einzubauen. Als Notbehelf für Probleme außerhalb Deiner Gewalt ist das ein super Mechanismus.
 

Landei

Top Contributor
OT: Als ich die Überschrift gelesen hatte, dachte ich, dass jetzt wirklich eine "private Frage" kommt, so wie "Wie bekommt *ihr* eigentlich euren Fußpilz weg?" :-D
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
E einfache Frage zu private Java Basics - Anfänger-Themen 26
A Allgemeine Frage zur Sichtbarkeit "private" Java Basics - Anfänger-Themen 5
F Frage zur Vererbung und Zugriffmodifikator private Java Basics - Anfänger-Themen 3
R private / public Frage Java Basics - Anfänger-Themen 7
M OOP frage, private variablen default-wert zuweisen sinnvoll? Java Basics - Anfänger-Themen 5
U Warum kann ich, auf private Variablen zugreifen, wenn ich ein Objekt in der Klasse, die private Variablen hat erstelle und dort drauf zugreifen will? Java Basics - Anfänger-Themen 7
M Private Variable Java Basics - Anfänger-Themen 2
Gaudimagspam Attribute einfügen private Java Basics - Anfänger-Themen 3
N JUnit und private Methoden testen. Java Basics - Anfänger-Themen 9
Z private Klassenvariablen Java Basics - Anfänger-Themen 8
S Private int in Klasse Java Basics - Anfänger-Themen 4
H Vererbung mit private instanzvariablen Java Basics - Anfänger-Themen 9
C Methoden Vererbung private Attribute/public Methoden Java Basics - Anfänger-Themen 4
J Klasse wird als private erkannt obwohl sie public deklariert ist Java Basics - Anfänger-Themen 3
E 2 Probleme - Datum & private finale Variablen Java Basics - Anfänger-Themen 5
shiroX Klassen Klasse/Methode private final jUnit-Fehler Java Basics - Anfänger-Themen 5
N Instanzvariablen als private... Java Basics - Anfänger-Themen 2
A Private Attribut aus fremder Klasse lesen ? Java Basics - Anfänger-Themen 19
P Methoden private int[] in main Java Basics - Anfänger-Themen 16
A Klassen Werte in den private Bereich übergeben Java Basics - Anfänger-Themen 5
C Collections: private Map Java Basics - Anfänger-Themen 4
M Wie private Methoden mit Asserstions testen? Java Basics - Anfänger-Themen 3
M Verständnisfrage zu JUnit Tests und private Methoden Java Basics - Anfänger-Themen 3
D Klassenvariablen standardmäßig private oder public? Java Basics - Anfänger-Themen 2
W private Array Loops Java Basics - Anfänger-Themen 4
B public/private nur 1x schreiben Java Basics - Anfänger-Themen 3
H Privat ist nicht mehr private Java Basics - Anfänger-Themen 7
J Vererbung Zugriff auf private Variable Java Basics - Anfänger-Themen 10
A Variablen lokale Variable als private? Java Basics - Anfänger-Themen 3
A private string array Java Basics - Anfänger-Themen 5
B auf private Variable durch eine Methode zugreifen Java Basics - Anfänger-Themen 8
J Probleme mit verschiedenen Private Klassen Java Basics - Anfänger-Themen 3
T public-private problem Java Basics - Anfänger-Themen 5
C Comparator und private Variablen Java Basics - Anfänger-Themen 7
K Methoden als private deklarieren? Java Basics - Anfänger-Themen 13
K Protected und Private Deklaration Java Basics - Anfänger-Themen 8
F Im Konstruktor mit Settern auf private Attribute zugreifen - oder nicht? Java Basics - Anfänger-Themen 18
B Kapselung Klasse private, Konstruktor protected Java Basics - Anfänger-Themen 10
H NEtBeans: Fehler: XXX has private access... Java Basics - Anfänger-Themen 2
K Kapselung public / private verständis problem Java Basics - Anfänger-Themen 17
N public class -> public method -> variable private? Java Basics - Anfänger-Themen 10
W Private Methode variablen übergeben..?! WIE! Java Basics - Anfänger-Themen 30
K OOP Datenkapselung mittels private - length Attribut bei Array Java Basics - Anfänger-Themen 3
L Private Methode in Subklasse? Java Basics - Anfänger-Themen 2
S Private Class Problem Java Basics - Anfänger-Themen 17
K Kann man Private-Konstruktoren doch aurufen? Java Basics - Anfänger-Themen 8
Luk10 Vererben von private instanzvariablen Java Basics - Anfänger-Themen 20
P zugriff auf private variablen Java Basics - Anfänger-Themen 5
berliner Klassen Vererbung und Zugriff auf innere private Variable Java Basics - Anfänger-Themen 22
G field public/private wann Java Basics - Anfänger-Themen 11
G Zugriff auf private Variablen einer inneren Klasse Java Basics - Anfänger-Themen 5
G Private Messages versenden Java Basics - Anfänger-Themen 13
S Zugriffe über Private Instanzvariablen Java Basics - Anfänger-Themen 3
J Public / Private Keys speichern bzw. lesen? Java Basics - Anfänger-Themen 8
R Private Methoden von auserhalb aufrufen Java Basics - Anfänger-Themen 2
N private variable vom typ einer klasse Java Basics - Anfänger-Themen 20
A in abstract Klasse private Variablen Java Basics - Anfänger-Themen 3
G GUI Controls private oder public Java Basics - Anfänger-Themen 6
G Variablen public oder private? Java Basics - Anfänger-Themen 9
P Private Klassen Java Basics - Anfänger-Themen 4
S private public Java Basics - Anfänger-Themen 5
S private String text; -> "Illegal start of expression Java Basics - Anfänger-Themen 7
R Klasse nicht sichtbar(kein private-Fehler) Java Basics - Anfänger-Themen 2
G Public ,private,protected Java Basics - Anfänger-Themen 1
R Private Klasse in Applet nutzen? Java Basics - Anfänger-Themen 9
B Instanzvariablen private? Java Basics - Anfänger-Themen 5
M Sichtbarkeit von private Java Basics - Anfänger-Themen 2
A public/private/etc. Zusatz weglassen Java Basics - Anfänger-Themen 2
M [SOLVED]private Daten head - neues objekt? Java Basics - Anfänger-Themen 12
H Vererbung:private Java Basics - Anfänger-Themen 7
U public, private, protected und "default access" - Java Basics - Anfänger-Themen 14
T private final String oder final String? Was ist richtig? Java Basics - Anfänger-Themen 4
M Jede Variable als private, protected etc. deklarieren? Java Basics - Anfänger-Themen 7
U was macht "private" ? :) Java Basics - Anfänger-Themen 7
G private methode wird aus anderer klasse aufgerufen? Java Basics - Anfänger-Themen 3
megachucky wie bekomm ich ein private attribut aus einer andren klasse? Java Basics - Anfänger-Themen 18
H private anstatt public Java Basics - Anfänger-Themen 2
H public und private Java Basics - Anfänger-Themen 5
A Public/Private und wie importieren? Java Basics - Anfänger-Themen 13
Zrebna Frage zu Test-Driven Development (TDD) Java Basics - Anfänger-Themen 3
I Frage Thymeleaf -> Fehler ignorieren und mit "" ersetzen? Java Basics - Anfänger-Themen 15
I Frage Thymeleaf -> Prefix / Suffix ändern? Java Basics - Anfänger-Themen 11
D Rekursions Probleme / frage Java Basics - Anfänger-Themen 4
T Frage zu Parse Java Basics - Anfänger-Themen 2
H Frage an die Profis Java Basics - Anfänger-Themen 4
J Eine konzeptionelle Frage zu OOP Java Basics - Anfänger-Themen 3
P Frage zu Rekursion und Backtracking Java Basics - Anfänger-Themen 2
H Frage zur Ausgabe Java Basics - Anfänger-Themen 4
H Frage zu arithmetischen Operationen Java Basics - Anfänger-Themen 20
F Kurze Frage zu replace() Java Basics - Anfänger-Themen 19
JavaSchmecktLecker Polymorphie Frage zur Methodenüberschreibung Java Basics - Anfänger-Themen 21
J Frage zu einem "Taschenrechner" code Java Basics - Anfänger-Themen 9
B Erste Schritte Frage zu Instanzierung und Referenzen Java Basics - Anfänger-Themen 8
DoubleM Runtime.getRuntime().exec Frage Java Basics - Anfänger-Themen 2
J Eine theoretische Frage zur Praxis - JPanel oder Canvas Java Basics - Anfänger-Themen 5
O Frage: Formaler Typbezeichner? Java Basics - Anfänger-Themen 3
I BlueJ Queue Frage für Klausur Java Basics - Anfänger-Themen 2
N Verständnis Frage zu Variablen Java Basics - Anfänger-Themen 3
N Spezielle frage zum Comparator Java Basics - Anfänger-Themen 6
L Frage zum Array Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben