Sichtbarkeit protected: Attribute trotzdem aufrufbar.

Hallo liebe Java-Community,

ich habe folgendes Problem:

Ich lerne gerade Java mit dem JavaEditor (...) und habe folgenden Code geschrieben:

Java:
public class KlasseA
{
  protected int zahlA;
  public int zahlB;
}

Java:
public class KlasseB extends KlasseA{}

Java:
public class HK{
  public static void main(String args[]){
    KlasseA a = new KlasseA();
    KlasseB b = new KlasseB();
        
    a.zahlA = 7;
    b.zahlA = 6;
  }
}


Nach meinem Verständnis dürften "a.zahlA = 7;" und "b.zahlA = 6;" nicht funktionieren (müssten einen Fehler liefern), weil zahlA ja protected ist und die Klasse HK nicht zur Vererbungshierarchie gehört.
Allerdings läuft es problemlos durch, und die 7 und 6 können auch mit System.out.println(a.zahlA) / ... (B) ausgegeben werden. Kann das vielleicht jemand erklären?

Vielen Dank und beste Grüße
kue
 
Müsste nicht über dem Paket ein package ... drüber stehen, oder machen IDEs sowas automatisch?
Über "dem Paket" ein "package ..." stehen?

Wenn du in deiner Compilation Unit (i.e. ".java"-Datei) keine package ...; Zeile hast, dann liegt jede Klasse, die aus dieser Compilation Unit erzeugt wird (public top-level und alle weiteren non-public oder anonymous oder inneren Klasse) innerhalb des "default"-Packages ohne Namen.

Es empfiehlt sich aber SEHR STARK, niemals das implizite unbenamte default-Package zu verwenden, da man z.B. aus anderen Packages keine Klassen des default-Packages importieren kann.
 
Über "dem Paket" ein "package ..." stehen?
Entschuldigung, ich meinte eigentlich "Über dem 'public class ...'", also am Start der .java-Datei.

Wenn du in deiner Compilation Unit (i.e. ".java"-Datei) keine package ...; Zeile hast, dann liegt jede Klasse, die aus dieser Compilation Unit erzeugt wird (public top-level und alle weiteren non-public oder anonymous oder inneren Klasse) innerhalb des "default"-Packages ohne Namen.
Die drei Klassen oben sind also alle im gleichen Package ("default") und deshalb kann auf "protected"-Attribute zugegrifen werden? Wenn ja, dann habe ich es verstanden.

Danke!
 

Neue Themen


Zurück
Oben