Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Liebe Community, anbei ein Problem welches ich mir nicht erklären kann
Folgender kleiner Code
Java:
class foo
{
public String publicProperty = "öffentlich";
protected String protectedProperty = "geschützt";
}
public class Main {
public static void main(String[] args) {
foo obj = new foo();
System.out.println(obj.publicProperty);
System.out.println(obj.protectedProperty);
}
Ausgabe ist
öffentlich
geschützt
Aber warum wird geschützt ausgegeben ?
Die Variable protectedProperty habe ich als protected deklariert.
d.h man kann auf diese doch nur innerhalb der Klasse und in abgeleiteten Klassen
zugreifen.
aber warum kann ich denn von einer anderen Klasse public class Main darauf zugreifen ?
Ich versteh das einfach nicht.
Die Vererbung kann durch private eingeschränkt werden. Eine Subklasse erbt dann alles von einer Superklasse, was nicht private ist. Zusätzlich kommt zu private noch eine Sonderform protected hinzu. Hier kann auch eine Unterklasse alle Eigenschaften sehen. Nur von außen sind die Eigenschaften privat. Eine Ausnahme bilden jedoch Klassen, die im gleichen Paket sind; auch sie können die Eigenschaften einer protected-Klasse sehen. Damit ist protected mehr als nur die Sichtbarkeit für Unterklassen, denn wenn auch Klassen im gleichen Paket lesen können, ist die Sichtbarkeit fast public. Nehmen wir eine Klasse K und L im Paket p an. Deklariert K die Attribute protected, so kann L diese lesen und modifizieren.
Die Variable protectedProperty habe ich als protected deklariert.
d.h man kann auf diese doch nur innerhalb der Klasse und in abgeleiteten Klassen
zugreifen.
hmm jetzt habe ich es so gemacht
im Netbeans auf Neues Projekt -> New Java Application
Project Name: JavaApplication37
Nun hat es ein Package angelegt mit Namen javaApplication37
und der datei Main.java
Wie muss ich nun die neue Klasse foo erstellen damit ich dies mit protected testen kann.
Ich habe es so gemacht dass ich einen rechtsklick auf javaApplication37 gemacht habe und dann
eine neue Klasse mit Namen foo angelegt, aber so wird immer noch die protected variable angezeigt.
wobei ich hier wieder hinweisen möchte, dass ich dir den Link nicht nur um meine Zeichenzahl pro Beitrag zu erhöhen gepostet habe , sondern da dort alles beschreiben ist was du für packages brauchst