Variablen Gültigkeit von Klassenvariablen bei Vererbung?

membersound

Bekanntes Mitglied
Hallo,

ich verstehe folgendes bei der Vererbung nicht: wenn ich versuche in der Kindklasse 'Astra' auf die Variable 'name' zuzugreifen, dann scheint sie dort nicht bekannt zu sein. Aber die Kindklasse ruft doch automatisch den Konstuktor der Elternklasse 'Opel' auf, warum ist denn die Variable nicht bekannt?

Opel.java:
Code:
public class Opel {
    
    public Opel () {
        String name = "Opel";
        System.out.println(name);
    }
    
    public static void main(String args[]) {
        new Opel();
        new Astra();
    }
}

Astra.java:
Code:
public class Astra extends Opel {
    public Astra () {
       // super();
        this.name = "Astra"; //<-- Uncompilable source code - cannot find symbol
        System.out.println(name);
    }
}

Danke
 

tfa

Top Contributor
name ist eine lokale Variable im Konstruktor der Opel-Klasse. Woanders als dort ist die nicht existent.
Wenn du eine Member-Variable (wahrscheinlich meinst du das mit "Klassenvariable") haben willst, musst du sie außerhalb von Methoden bzw. Konstruktoren deklarieren.
 

tuttle64

Bekanntes Mitglied
Hallo,

ich verstehe folgendes bei der Vererbung nicht: wenn ich versuche in der Kindklasse 'Astra' auf die Variable 'name' zuzugreifen, dann scheint sie dort nicht bekannt zu sein. Aber die Kindklasse ruft doch automatisch den Konstuktor der Elternklasse 'Opel' auf, warum ist denn die Variable nicht bekannt?

Die Variable name ist lokal innerhalb eines Konstruktors deklariert und nur dort bekannt. Nicht mal innerhalb der Klasse von ausserhalb des Konstruktors wirst Du auf diese Variable zugreifen können. Es ist eh eine schlechte Idee, direkt auf Variablen zuzugreifen. Besser ist es, mit einem Getter zu arbeiten. Deine Variable muss aber als Feld deklariert sein. Hier ein kleines Beispiel

public class Opel {
private String name = "Opel";

public String getName() {
return this.name;
}
 

membersound

Bekanntes Mitglied
Verstehe, vielen Dank!

Aber wofür brauch ich denn dann einen Konstruktor im Allgemeinen, wenn ich nachher selbst von der eigenen Klasse nicht mehr drauf zugreifen kann?


Und wie könnte ich aus der Kindklasse den Standardnamen "Astra" bei der Erzeugung des Objekts verwenden? Ich hätte jetzt gedacht, das mache ich mit "super(name);" im Astra-Konstruktor, aber dem ist wohl nicht so.

Code:
public class Opel {
    private String name = "Opel";
    
    public String getName() {
        return this.name;       
    }
    
    public Opel() {
        System.out.println(getName());
    }

    public Opel(String name) {
        this.name = name;
        System.out.println(getName());
    }
     
    public static void main(String args[]) {
        new Opel();
        new Astra();
    }
}

Code:
public class Astra extends Opel {
    private String name = "Astra";
    
    public Astra() {
       super(this.name); //<-- cannot reference name before supertype constructor has been called
    }
}
 

faetzminator

Gesperrter Benutzer
Java:
public class Opel {
    // ...
    public Opel() {
        this("Opel");
    }

    protected Opel(String name) {
        setName(name);
    }
    // ...
}

public class Astra extends Opel {
    public Astra() {
        super("Astra");
    }
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Worte auf Gültigkeit bzgl. Alphabet testen Java Basics - Anfänger-Themen 1
J Gültigkeit einer ISBN Nummer prüfen! Java Basics - Anfänger-Themen 5
G Gültigkeit eines Strings auf ISO-LATIN-1 prüfen Java Basics - Anfänger-Themen 9
Y File auf Gültigkeit überprüfen Java Basics - Anfänger-Themen 12
L Datum auf Gültigkeit prüfen Java Basics - Anfänger-Themen 27
G Datum auf gültigkeit Kontrollieren Java Basics - Anfänger-Themen 14
M Datum auf Gültigkeit überprüfen Java Basics - Anfänger-Themen 4
C Ausweis auf gültigkeit prüfen Java Basics - Anfänger-Themen 13
T Gültigkeit von break Java Basics - Anfänger-Themen 5
G Gültigkeit von Objekten Java Basics - Anfänger-Themen 2
G Problem mit Gültigkeit von Variabeln und Konstruktoren Java Basics - Anfänger-Themen 4
W Unterschiede bei Zugriff auf Objekt und Klassenvariablen über einen Getter? Java Basics - Anfänger-Themen 2
KogoroMori21 Objektvariablen, Klassenvariablen, Instanzvariablen Java Basics - Anfänger-Themen 1
D Richtige Kommentierung Klassenvariablen Java Basics - Anfänger-Themen 19
Z private Klassenvariablen Java Basics - Anfänger-Themen 8
N Klassenvariablen zurücksetzen Java Basics - Anfänger-Themen 4
G Klassenvariablen & Instanzvariablen Java Basics - Anfänger-Themen 4
J Variablen Unterschied zwischen lokalen-, Instanz-, Klassenvariablen Java Basics - Anfänger-Themen 6
N Vererbung Best Practice: Verfeinerte Klassenvariablen in Unterklasse Java Basics - Anfänger-Themen 5
D Klassenvariablen standardmäßig private oder public? Java Basics - Anfänger-Themen 2
S Initialisierung von Klassenvariablen Java Basics - Anfänger-Themen 7
A Klassenvariablen zusammen fassen Java Basics - Anfänger-Themen 5
G Frage zu Fields - Klassenvariablen Java Basics - Anfänger-Themen 9
A Klassenvariablen Referenz auf ein Objekt Java Basics - Anfänger-Themen 18
J Klassenvariablen lesen Java Basics - Anfänger-Themen 13
B Datentypen Klassenvariablen Java Basics - Anfänger-Themen 2
G OOP Verständisfrage zu Klassenvariablen Java Basics - Anfänger-Themen 5
C Klassenvariablen und Klassenmethoden Java Basics - Anfänger-Themen 17
J Problem mit inneren Klassen und Klassenvariablen Java Basics - Anfänger-Themen 11
G Sollte man Klassenvariablen als final deklarieren? Java Basics - Anfänger-Themen 3
X Zugriff auf Klassenvariablen NUR mit get/set Methoden? Java Basics - Anfänger-Themen 8
W Klassenvariablen und Werte ausgeben Java Basics - Anfänger-Themen 2
D Globale Klassenvariablen. Java Basics - Anfänger-Themen 12
7 Lokale Variablen, Klassenvariablen, Instanzvariablen Java Basics - Anfänger-Themen 15
H Klassenvariablen,methoden Java Basics - Anfänger-Themen 7
M Zugriff auf Klassenvariablen Java Basics - Anfänger-Themen 8
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 Klassen Vererbung privater Methoden und Member Java Basics - Anfänger-Themen 12
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

Ähnliche Java Themen

Neue Themen


Oben