Klassen Vererbung privater Methoden und Member

aaabbb

Mitglied
Hallo,

ich bin etwas verwirrt wie die Vererbung bei privaten Methoden und privaten Membern einer Oberklasse funktioniert.

Im Netzt steht: "Alle Attribute und Methoden der Superklasse, die mit dem Schlüsselwort private gekennzeichnet sind, werden nicht vererbt."
https://www.java-tutorial.org/vererbung.html

Mein Prof meinte nun aber, dass nur die privaten Methoden nicht vererbt werden. Die privaten Member werden aber sehr wohl vererbt.
Würde ja auch Sinn machen, denn wenn die Oberklasse einen privaten Member z.B. private int i; hat, dann besitzt ein Objekt der Unterklasse auch diesen Member. Andererseits kann ich jedoch auf diesen nicht direkt von der Unterklasse aus zugreifen.

Wir ihr seht, bin ich etwas verwirrt.
Es wäre nett, wenn jemand die Verwirrung lichten könnte.
Danke!
 

Javinner

Top Contributor
Ich denke, dein Prof will, dass du der Sache auf den Grund gehst. Das Schöne ist doch, überzeuge dich selbst, in dem du eine SuperMember Klasse erstellst, dieser paar Attribute deiner Wahl mit verschiedenen Modifizierer ausstattest um es in der vererbenden Klasse, zum Beispiel Member, selbst sehen zu können, was und wie da was möglich ist. Als Ergänzung würde ich mich eventuell noch hier einlesen wollen.
 

aaabbb

Mitglied
D.h. private Member / Methoden der Oberklasse werden nicht an die Unterklasse vererbt. Das Unterklassenobjekt jedoch enthält auch die privaten Member / Methoden der Oberklasse?
 

httpdigest

Top Contributor
Nur kurz eine Sache, die mir gerade aufgefallen ist: "Member" ist die Oberbezeichnung für alle Felder und Methoden einer Klasse. Also Felder und Methoden sind alle Member ihrer deklarierenden Klasse.
Member ist ja schließlich nur das englische Wort für "Mitglied"/"Teil". Also, sowohl Felder als auch Methoden sind Mitglieder/Teile ihrer deklarierenden Klasse.
Du scheinst mit dem Wort "Member" jedoch ausschließlich "Feld" (oder auch "Attribut") zu meinen. :)
 
Zuletzt bearbeitet:

aaabbb

Mitglied
Wäre dann folgendes richtig?:
D.h. private Attribute / Methoden der Oberklasse werden nicht an die Unterklasse vererbt. Das Unterklassenobjekt jedoch enthält auch die privaten Attribute/ Methoden der Oberklasse?
 

httpdigest

Top Contributor
Ich würde sagen: Eine Instanz/ein Objekt einer Unterklasse besitzt als Teil seines Zustandes auch die Werte der Felder/Attribute aller (transitiven) Oberklassen. Das muss doch so sein. Ansonsten könnte eine in der Oberklasse deklarierte aufgerufene Methode ja gar nicht auf das Feld/Attribut selbst zugreifen.

Ein Objekt "enthält" aber keine Methoden. Eine Klasse enthält Methoden. Methoden sind etwas statisches, also sie werden ja nicht für jede Instanz/jedes Objekt einer Klasse kopiert, sondern hängen an der Klasse selbst und die Sichtbarkeit der Methode legt fest, durch wen (durch welche Methode welcher Klasse) diese Methode aufrufbar ist.
Somit weiß ich nicht richtig, was du mit dem Satz "Das Unterklassenobjekt jedoch enthält auch die privaten [...] Methoden der Oberklasse" genau meinst.

Ich würde sagen: Jede (transitive) Oberklasse einer abgeleiteten Unterklasse hat Zugriff auf alle ihre deklarierten privaten Methoden. Das heißt aber nicht, dass ein Objekt also eine Instanz einer Klasse diese Methoden "enthält."
Letztlich ist das alles sehr pedantisches auf Definitionen Rumgereite.

Berufe dich einfach auf die Java Language Specification Kapitel 8.2, in der steht:
"Members of a class that are declared private are not inherited by subclasses of that class."
Punkt.
 

aaabbb

Mitglied
Es geht halt darum, dass ich ja eine in der Oberklasse definiertes privates Attribut auch bei einem Objekt der Unterklasse vorhanden ist.
Laut der Definition dürfte dies dann aber doch nicht so sein, da private Attribute nicht vererbt werden.
 

httpdigest

Top Contributor
Es geht halt darum, dass ich ja eine in der Oberklasse definiertes privates Attribut auch bei einem Objekt der Unterklasse vorhanden ist.
Laut der Definition dürfte dies dann aber doch nicht so sein, da private Attribute nicht vererbt werden.
Laut welcher Definition genau?
Es gibt einen Unterschied zwischen "das Attribut ist vorhanden" und "das Attribut ist von einer Methode X in Klasse Y 'sichtbar' und kann von dort zugegriffen werden." Vererben heißt hier eher das letztere, also es ist sichtbar und kann von dort zugegriffen werden.
Der genannte StackOverflow Eintrag hebt diesen Unterschied auch nochmal hervor. Bitte lese ihn auch nochmal.
 

Blender3D

Top Contributor
Im Netzt steht: "Alle Attribute und Methoden der Superklasse, die mit dem Schlüsselwort private gekennzeichnet sind, werden nicht vererbt."
Die Problematik hier ist was man unter dem Begriff nicht vererbt versteht. Da die Kindklasse die Basisklasse erweitert --> sie erbt alle Attribute und alle Methoden. Hier ist mit nicht vererben nur die Sichtbarkeit gemeint. Die Wirklichkeit wird mit nicht vererben eigentlich schlecht beschrieben. Daher die Verwirrtheit.
z.B.

Java:
public class Base {
    private final String nurIchFrage = "Ich bin privat aber meine Kinder erben mich obwohl sie mich nicht sehen!";

    public void zeigeBaseGene() {
        System.out.println(nurIchFrage);
    }

    @Override
    public String toString() {
        return "Base Class";
    }

}
Java:
public class SubClass extends Base {
    private String meinErbgut = "Ich bin das Kind";

    @Override
    public String toString() {
        return "Sub Class " + meinErbgut;
    }

}
Java:
    Base base = new Base();
        SubClass sub = new SubClass();
        System.out.println(base);
        base.zeigeBaseGene();
        System.out.println(sub);
        sub.zeigeBaseGene();

Die Ausgabe:
..
Base Class
Ich bin privat aber meine Kinder erben mich obwohl sie mich nicht sehen!
Sub Class Ich bin das Kind
Ich bin privat aber meine Kinder erben mich obwohl sie mich nicht sehen!
..
Wie man gut erkennen kann gibt hier der Aufruf
Java:
sub.zeigeBaseGene();
das private Attribut der Basisklasse aus. Das ginge nicht wenn es dieses Attribut nicht besitzen würde weil es ja nicht vererbt wurde.
Die Dokus und dein Professor meinen hier mit nicht vererben eigentlich die Sichtbarkeit privater Attribute und Methoden seitens der Kindklasse.
Meiner Meinung nach ist nicht vererben hier ein schlecht gewählter Begriff.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Vererbung privater Variablen Java Basics - Anfänger-Themen 7
imocode Vererbung Problem mit Vererbung Java Basics - Anfänger-Themen 2
M Vererbung - Polymorphie Java Basics - Anfänger-Themen 37
L Java- Vererbung Java Basics - Anfänger-Themen 4
ineedhelpinjava Vererbung Java Basics - Anfänger-Themen 12
ineedhelpinjava Vererbung Java Basics - Anfänger-Themen 1
I JSON / XML Struktur mit Vererbung / Interfaces Java Basics - Anfänger-Themen 0
M Interface oder Vererbung? Java Basics - Anfänger-Themen 12
M Vererbung Java Basics - Anfänger-Themen 6
M Designentscheidung von Attributen/Methoden im Falle von Vererbung Java Basics - Anfänger-Themen 8
M Generics Vererbung Listen Java Basics - Anfänger-Themen 2
A Methoden Vererbung und Interface Java Basics - Anfänger-Themen 14
D Klassen und Vererbung Java Basics - Anfänger-Themen 2
U Vererbung Java Basics - Anfänger-Themen 7
D Vererbung Java Basics - Anfänger-Themen 3
K Schleife berechnet kein Ergebnis (Vererbung) Java Basics - Anfänger-Themen 6
00111010101 Objektorientiertes Programmieren mit Vererbung (Zahlen in Array verschwinden) Java Basics - Anfänger-Themen 3
W Zur Vererbung: Wann und wie? Java Basics - Anfänger-Themen 35
H Datenkapselung, Vererbung und UML Java Basics - Anfänger-Themen 16
districon Super-Stichwort/ Vererbung Java Basics - Anfänger-Themen 3
YaU Vererbung erstellt NullPointerException? Java Basics - Anfänger-Themen 4
1 Vererbung Klassenattribute Java Basics - Anfänger-Themen 9
TimoN11 Frage zu Java-Vererbung (Cast) Java Basics - Anfänger-Themen 5
N Thema Vererbung Java Basics - Anfänger-Themen 31
A Vererbung Vererbung Übung Java Basics - Anfänger-Themen 5
B Vererbung - Sichtbarkeitsmodifikation - protected Java Basics - Anfänger-Themen 10
B Best Practice Unschlüssig ob Vererbung oder Interface Java Basics - Anfänger-Themen 2
G Java Vererbung Java Basics - Anfänger-Themen 8
Y Vererbung Konto - Anfangsprobleme Java Basics - Anfänger-Themen 7
A Vererbung Klassen im Bezug auf Auto´s Java Basics - Anfänger-Themen 18
A Klassen Vererbung und zusätzliche Unterklassen Java Basics - Anfänger-Themen 23
M Vererbung mit Enums Java Basics - Anfänger-Themen 8
Kirby.exe Vererbung im Detail erklärt? Java Basics - Anfänger-Themen 9
N Modellierung, vererbung, Java Basics - Anfänger-Themen 163
M Fehlendes Verständnis für dynamische Bindung und Vererbung Java Basics - Anfänger-Themen 13
W OOP Vererbung im Computerspiel Java Basics - Anfänger-Themen 7
J Probleme mit Vererbung Java Basics - Anfänger-Themen 4
I Vererbung Java Basics - Anfänger-Themen 13
W OOP Vererbung und Problem bei Zählschleife in einer Methode Java Basics - Anfänger-Themen 10
W Methoden Verständnisfrage Vererbung von Methoden Java Basics - Anfänger-Themen 14
V Vererbung Java Basics - Anfänger-Themen 2
J Frage zur Vererbung Java Basics - Anfänger-Themen 1
J Vererbung Java Basics - Anfänger-Themen 3
U Was löst meine NullPointerException aus? (Vererbung) Java Basics - Anfänger-Themen 12
O Vererbung Ueben mit kleiner Datenstruktur von Räumen Java Basics - Anfänger-Themen 10
O Umgang mit Vererbung verstehen Java Basics - Anfänger-Themen 4
A Vererbung/Interfaces/Generics Java Basics - Anfänger-Themen 12
O Vererbung änderung des Konstruktors Java Basics - Anfänger-Themen 8
L Vererbung Java Basics - Anfänger-Themen 5
E HashMap+Vererbung Java Basics - Anfänger-Themen 11
E Vererbung super-Methoden Aufruf Java Basics - Anfänger-Themen 3
B Java Vererbung Fragen (zu Code Beispiel) Java Basics - Anfänger-Themen 3
A Objekterstellung bei der Vererbung Java Basics - Anfänger-Themen 7
P Vererbung Warum funktioniert die Vererbung hier nicht Java Basics - Anfänger-Themen 14
S Vererbung Java mehrfach Java Basics - Anfänger-Themen 10
B Objekte zählen/ Vererbung/ Kopplung/ Interface/ Abstract Class Java Basics - Anfänger-Themen 5
A Konstruktoren Vererbung Java Basics - Anfänger-Themen 3
ReinerCoder Vererbung von JFrame in einer Klasse entfernen Java Basics - Anfänger-Themen 5
W Vererbung, abstract und Konstruktoren Java Basics - Anfänger-Themen 30
J Vererbung und Methodenaufruf Java Basics - Anfänger-Themen 11
G Polymorphie, Vererbung, statischer Typ, Laufzeittyp Java Basics - Anfänger-Themen 2
H Vererbung mit private instanzvariablen Java Basics - Anfänger-Themen 9
S Vererbung Funktionsweise Code zur Vererbung Java Basics - Anfänger-Themen 1
C Methoden Vererbung private Attribute/public Methoden Java Basics - Anfänger-Themen 4
S Verständnis Vererbung Java Basics - Anfänger-Themen 3
D JavaFX Vererbung Java Basics - Anfänger-Themen 2
U Vererbung Generizität und Vererbung Java Basics - Anfänger-Themen 4
A Vererbung bei Klassen mit Objekt der Klasse im Konstruktor Java Basics - Anfänger-Themen 4
K Vererbung Octagon von Circle Java Basics - Anfänger-Themen 0
B Hilfe bei Vererbung Java Basics - Anfänger-Themen 2
D Vererbung Frage zum Klassenaufbau mit Vererbung Java Basics - Anfänger-Themen 1
T Vererbung und interface. Java Basics - Anfänger-Themen 1
S Gehaltsberechnung (Vererbung, abstrakte Methoden) Java Basics - Anfänger-Themen 6
S Vererbung Java Basics - Anfänger-Themen 1
F Vererbung in zwei Richtungen? Java Basics - Anfänger-Themen 14
D Vererbung / Polymorphie Java Basics - Anfänger-Themen 5
O Vererbung Java Basics - Anfänger-Themen 5
MiMa Vererbung Theorie OK, Praxis ?? Java Basics - Anfänger-Themen 4
Arif Vererbung Vererbung Variablen überschreiben Java Basics - Anfänger-Themen 1
C Vererbung - Ausgaben bestimmen Java Basics - Anfänger-Themen 6
S Vererbung Java Basics - Anfänger-Themen 10
L Setter und Getter/Vererbung Java Basics - Anfänger-Themen 6
C Konstruktoren und Vererbung Java Basics - Anfänger-Themen 2
J Kleinere Frage zur Vererbung/Objekterzeugung Java Basics - Anfänger-Themen 2
G Vererbung Java Basics - Anfänger-Themen 12
J Vererbung Vererbung von Methoden Java Basics - Anfänger-Themen 6
B Vererbung Java Basics - Anfänger-Themen 12
K Vererbung (super) Java Basics - Anfänger-Themen 2
A ArrayQueue mit Exceptions und Vererbung Java Basics - Anfänger-Themen 3
J Java: static bei Vererbung Java Basics - Anfänger-Themen 5
C Vererbung Java Basics - Anfänger-Themen 4
L Vererbung Java Basics - Anfänger-Themen 3
J Klassenorganisation | Vererbung Java Basics - Anfänger-Themen 1
B Vererbung Vererbung Java Basics - Anfänger-Themen 2
N Generics Vererbung Wildcard Interface Java Basics - Anfänger-Themen 8
A Benötige Hilfe bei Vererbung Java Basics - Anfänger-Themen 1
M Anfängerprobleme mit Vererbung Java Basics - Anfänger-Themen 27
J Vererbung Java Basics - Anfänger-Themen 9
F Vererbung von Attributen zwischen zwei Klassen Java Basics - Anfänger-Themen 6
J Konstruktor Problem bei Vererbung Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben