Vererbung...

coldstone

Bekanntes Mitglied
Hallo liebe Java Freunde,

brauche eure Hilfe.

Undzwar habe ich hier 2 Klassen. ErweitertesAuto soll die Attribute und Methoden von EinfachesAuto erben:

Java:
public class EinfachesAuto {
     // Attribute
     public String besitzer;
     public String autotyp;
     public String farbe;
     public int erstzulassung;
     public int leistung;
     public int kmStand;

     // Konstruktor
     public EinfachesAuto(String besitzer, String autotyp, String farbe,
                          int erstzulassung, int leistung, int kmStand) {

         this.besitzer = besitzer;
         this.autotyp = autotyp;
         this.farbe = farbe;
         this.erstzulassung = erstzulassung;
         this.leistung = leistung;
         this.kmStand = kmStand;
     }

     // Methoden
     /** Berechnung des Alters des Autos aufgrund des aktuellen 
      *  Kalenderjahrs und der Erstzulassung.
     *  @param ohne
      *  @return int alter
      */
     public int alter() {
        // Ermittlung des aktuellen Jahres 
         Calendar aktuellerKalender = Calendar.getInstance();
         int aktuellesJahr = aktuellerKalender.get(Calendar.YEAR);
         return aktuellesJahr - this.erstzulassung;
     }

     /** Einfache Ausgabe auf den Bildschirm.
      *  @param ohne
      *  @return void
      */
     public void meldung() {
         System.out.print ("Hier gruesst das "+ this.farbe );
         System.out.println (" Auto von " + this.besitzer);
     }
 }

Java:
public class ErweitertesAuto extends EinfachesAuto{
     // Attribute
   
     private String standort; 
     private long fahrgestellnummer;

     // Konstruktor
     public ErweitertesAuto(String besitzer, String autotyp, String farbe,
             int erstzulassung, int leistung, int kmStand, String standort, long fahrgestellnummer) {

     //Es werden 2 weitere Attribute hinzugefügt
         super (besitzer, autotyp, farbe, erstzulassung, leistung, kmStand);
    	 this.standort = standort;
         this.fahrgestellnummer = fahrgestellnummer;
     }

  
     /** Einfache Ausgabe auf den Bildschirm.
      *  @param ohne
      *  @return void
      */
     public void meldung() {
         System.out.print ("Hier gruesst das "+ this.farbe );
         System.out.println (" Auto von " + this.besitzer);
     }
     
     // Die Werte der Attribute werden auf dem Bildschirm wiedergegeben
     public void alleDatenAusgeben() {
    	 System.out.println("Erstes Auto: ");
    	 ErweitertesAuto erstesAuto = null;
		erstesAuto.alleDatenAusgeben();
    	 System.out.println("Zweites Auto: ");
    	 ErweitertesAuto zweitesAuto = null;
		zweitesAuto.alleDatenAusgeben();
    	 System.out.println("Drittes Auto: ");
    	 ErweitertesAuto drittesAuto = null;
		drittesAuto.alleDatenAusgeben();
     }
     // Berechnung einer Fahrt von Standort nach Ziel
     public int faehrtNach(String ziel, int entfernung) {
    	 System.out.println("Auto fährt von " + standort + " nach " + ziel + " " + entfernung + " km");
    	 standort = ziel;
    	 kmStand = kmStand + entfernung;
    	 return kmStand;
     }
 }

Ich kann die Klassen ohne fehlermeldung kompilieren.
Nur kann ich Sie nicht starten. Laut Prof. soll eine Klasse oder Methode fehlen zum Testen.
Denn "alleDatenAusgeben" soll mit dieser variante nicht funktionieren.
Kann mir da jemand auf die Sprünge helfen?

mfg
 
S

SlaterB

Gast
> public void alleDatenAusgeben() {
> ErweitertesAuto erstesAuto = null;
> erstesAuto.alleDatenAusgeben();

ein solche Code führt immer zu einer NullPointerException, unabhängig von der Art der Klassen und Vererbung,

aber sein froh, ansonsten würde dieselbe Methode aufgerufen, die dann wieder alleDatenAusgeben() an irgendeinem Auto aufruft,
die dann wieder usw. -> Endlosschleife

zum testen/ ausführen bietet sich allgemein eine main-Methode an, davon schon gehört?
 

coldstone

Bekanntes Mitglied
zum Ausführen brauche ich doch eine main methode. Und wie ich das gelernt habe fangen main methoden so an:

public static void main(String[] args) {

}
Nur weis ich nicht was zwischen den geschweiften klammern stehen sollte? Entweder mache ich es mir zu schwer oder es ist wirklich bischen kompliziert.

einfach "System.out.print (alleDatenAusgeben);" ???
 

WIaimy

Mitglied
Bevor du etwas ausgeben kannst, musst du Objekte erstellen --> "new"-Operator
Dann schau dir nochmal die Methode "alleDatenAusgeben" an und überleg dir, ob es Sinn macht, was da drin steht
Dann überleg dir, ob du nicht lieber eine "toString"-Methode nimmst (hier hilt google)

In deiner Main-Methode lässt du dann beliebig viele Objekte vom Typ ErweitertesAuto erstellen und zum Schluss z.B. per Schleife alle zusammen ausgeben
 

L-ectron-X

Gesperrter Benutzer
Wi hatten das Thema vor Kurzem schon mal. Aber ich finde den Thread nicht mehr.
Aber den Code habe ich noch, den ich korrigiert und erweitert habe. Vielleicht hilft er dir auch:
Java:
import java.util.Calendar;

public class EinfachesAuto {
     // Attribute
     private String besitzer;
     private String autotyp;
     private String farbe;
     private int erstzulassung;
     private int leistung;
     private int kmStand;

     // Konstruktor
     public EinfachesAuto(String besitzer, String autotyp, String farbe,
                          int erstzulassung, int leistung, int kmStand) {

         this.besitzer = besitzer;
         this.autotyp = autotyp;
         this.farbe = farbe;
         this.erstzulassung = erstzulassung;
         this.leistung = leistung;
         kmSetzen(kmStand);
     }
     
     //Typ zurückgeben
     public String gibAutoTyp() {
         return this.autotyp;
     }
     
     //Besitzer zurückgeben
     public String gibBesitzer() {
         return this.besitzer;
     }
     
     //Kilometerstand zurückgeben
     public int gibKmStand() {
         return kmStand;
     }
     
     public void kmSetzen(int kmStand) {
         this.kmStand = kmStand;
     }

     // Methoden
     /** Berechnung des Alters des Autos aufgrund des aktuellen
      *  Kalenderjahrs und der Erstzulassung.
      *  @param ohne
      *  @return int alter
      */
     public int alter() {
        // Ermittlung des aktuellen Jahres
         Calendar aktuellerKalender = Calendar.getInstance();
         int aktuellesJahr = aktuellerKalender.get(Calendar.YEAR);
         return aktuellesJahr - this.erstzulassung;
     }

     /** Einfache Ausgabe auf den Bildschirm.
      *  @param ohne
      *  @return void
      */
     public void meldung() {
         System.out.println("Der "+autotyp+" von "+this.besitzer+" ist "+
         this.farbe+" und "+alter()+" Jahre alt.");
         System.out.println("Der Motor des Wagens hat eine Leistung von "+
         this.leistung+" PS\nund eine Laufleistung von bisher "+kmStand+" km\n");
     }


}

Java:
class ErweitertesAuto extends EinfachesAuto {
    private String standort;
    private long fahrgestellnummer;

    public ErweitertesAuto(String besitzer, String autotyp, String farbe,
                            int erstzulassung, int leistung, int kmStand,
                            String standort, long fahrgestellnummer) {

      super(besitzer, autotyp, farbe, erstzulassung, leistung, kmStand);

      this.standort = standort;
      this.fahrgestellnummer = fahrgestellnummer;
    }
    
        // Ausgabe Reise und neuer Kilometerstand



    public int faehrtNach(String ziel, int entfernung)  {

        System.out.println(gibBesitzer()+" fährt mit seinem "+gibAutoTyp()+" von "+
        standort+" nach "+ziel+" " + entfernung + " km");

        standort = ziel;
        int kmStand = gibKmStand();
        kmSetzen(kmStand += entfernung);
        
        System.out.println("Der Tachostand zeigt nun eine Laufleistung von "+gibKmStand()+" km");

        return gibKmStand();         // Ausgabe des aktuellen Kilometerstandes.

    }
  
     /** Einfache Ausgabe auf den Bildschirm.
      *  @param ohne
      *  @return void
      */
     public void meldung() { //überschriebene Methode (Vererbung)
         super.meldung();
         System.out.println("Der "+gibAutoTyp()+" mit der Fahrgestellnummer "+
         this.fahrgestellnummer+" befindet sich in "+standort+".");
     }
}

Java:
class AutoTest {
   public static void main(String args[]) {
     /** Erzeugen von Objekten der Klasse EinfachesAuto **/
     EinfachesAuto vw = new EinfachesAuto("Jochen","VW Golf","silber",2005,145,865545);
     EinfachesAuto porsche = new EinfachesAuto("Sabine","Porsche Cayenne","blau",2009,240,227878);
     EinfachesAuto opel = new EinfachesAuto("Dieter","Opel Astra","weiß",2007,76,451123);
     vw.meldung();
     porsche.meldung();
     opel.meldung();
     
     ErweitertesAuto trabant = new ErweitertesAuto("Klaus","Trabant 601","himmelblau",
     1990,26,250000,"Berlin",3096099);
     trabant.meldung();
     
     trabant.faehrtNach("Potsdam",40);

   }
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
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
G 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
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 privater Variablen Java Basics - Anfänger-Themen 7
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

Ähnliche Java Themen

Neue Themen


Oben