Vererbung Warum funktioniert die Vererbung hier nicht

PaddyFH

Mitglied
Ich hab heute angefangen mein erstes Programm mit mehr als einer Klasse zu schreiben aber ich scheitere schon an der Vererbung🙁. Ich wollte halt ein Frame in der superclass initalisieren und es hier als Beispiel sichtbar machen. Hier der code:
Java:
import javax.swing.*;

public abstract class superclass {

    public static void main(String[] args) {
       
        JFrame frame = new JFrame();
        }
    }
Und die subclass:
Java:
public class subclass extends superclass {

   public CourtHouse() {
       frame.setVisible(true);
   }

}
Ich hoffe die Frage ist nicht allzu dämlich...
 
Doch, warum sollte das nicht klappen?

Es darf dann natürlich keine lokale Variable mehr sein, sondern eben eine Instanzvariable.
 
Mir sagt Eclipse, dass protected ein nicht möglicher Modifier ist. Soll ich nochmal den ganzen Code schicken um Missverständnisse zu vermeiden?
 
Java:
package game;

import javax.swing.*;

public abstract class superClass {

   public static void main(String[] args) {
 
       JFrame frame = new JFrame();

   }

}
Java:
package game;

public class subClass extends superClass {

   public subClass() {
       frame.setVisible(true);
   }

}

Sorry, bin dafür wirklich zu doof
 
Zuletzt bearbeitet von einem Moderator:
Java:
package game;

import javax.swing.*;

public abstract class superClass {

      public static void main(String[] args) {

        protected JFrame frame = new JFrame(); //hier ist der error

    }

}

package game;

public class subClass extends superClass {

    public subClass() {
        frame.setVisible(true);
    }

}
So besser?😛
 
package game;

import javax.swing.*;

public abstract class superClass {

public static void main(String[] args) {

protected JFrame frame = new JFrame(); //hier ist der error

}

}

package game;

public class subClass extends superClass {

public subClass() {
frame.setVisible(true);
}

}
1) private, protected, public
Sind Eigenschaften für Klassen Attribute oder Funktionen, um deren Sichtbarkeit zu definieren.
Sie können nicht innerhalb einer Funktion verwendet werden. Daher kommt die Fehlermeldung, die du erhälst.
2) Programm mit mehreren Klassen
Um ein Programm mit mehren Klassen zu realisieren braucht man die Vererbung nicht notwendigerweise.
Vererbung sollte nur sinnvoll verwendet werden. Die Funktion
Java:
public static void main(String[] args)
stellt den Einsprungs Punkt des Programmes dar. Die hat innerhalb einer Vererbungshierarchie nichts zu suchen.
Ein Beispiel für Vererbung wäre.
Java:
public abstract class Fahrzeug{}
public class Roller extends Fahrzeug{}
public class DreiRad extends Fahrzeug{}
public class Auto extends Fahrzeug{}
Wichtig dabei ein Roller ist ein Fahrzeug usw.
Mein Tipp an dich: Wenn du ein Programm mit mehreren Klassen schreiben willst, lass vorerst die Vererbung
weg. 😉
 

Neue Themen


Zurück
Oben