Vererbung Klassen im Bezug auf Auto´s

alex9090

Mitglied
Hallo,
ich habe letztens hier so einen tollen Support bekommen das ich mich gerne wieder mit der nächsten Frage an euch wenden würden. Geht um das Thema Vererbung.



Habe folgenden Code, Superklasse:

Java:
[/B]
public static void main(String[] args)
{

public class EinfachesAuto {

    // Instanzvariablen
    public String besitzer;
    public String autotyp;
    public String farbe;
    public int erstzulassung;
    public int leistung;
    public int kmStand;

    /**
     * Konstruktor fuer die Klasse EinfachesAuto
     *
     * @param besitzer
     *            Name des Autobesitzers
     * @param autotyp
     *            Typ des Autos
     * @param farbe
     *            Farbe des Autos
     * @param erstzulassung
     *            Jahreszahl der Autozulassung
     * @param leistung
     *            PS-Zahl des Autos
     * @param kmStand
     *            Kilometerstand des Autos
     */

    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;
    }







    /**
     * Die Methode getAlter() dient zur Errechnung des Autoalters ueber die
     * Erstzulassung.
     *
     * @return int: Alter des Autos
     */
    public int getAlter() {
        // Ermittlung des aktuellen Jahres
        Calendar aktuellerKalender = Calendar.getInstance();
        int aktuellesJahr = aktuellerKalender.get(Calendar.YEAR);
        return aktuellesJahr - this.erstzulassung;
    }

    /**
     * Die Methode meldung() gibt die Attribute "farbe" und "besitzer" auf der
     * Standardausgabe aus.
     */
    public void meldung() {
        System.out.print("Hier gruesst das " + this.farbe + "e ");
        System.out.print("Auto von " + this.besitzer);
    }

}}
[B]

Und die folgende Klasse soll Erben:

Java:
[/B]
public class ErgaenztesAuto extends EinfachesAuto {

    // Instanzvariablen
    /*private String besitzer;
    private String autotyp;
    private String farbe;
    private int erstzulassung;
    private int leistung;
    private int kmStand;*/
    private String standort;
    private String fahrgestellnummer;

    /**
     * Konstruktor fuer die Klasse EinfachesAuto
     *
     * @param besitzer
     *            Name des Autobesitzers
     * @param autotyp
     *            Typ des Autos
     * @param farbe
     *            Farbe des Autos
     * @param erstzulassung
     *            Jahreszahl der Autozulassung
     * @param leistung
     *            PS-Zahl des Autos
     * @param kmStand
     *            Kilometerstand des Autos
     * @param standort
     *            Standort des Autos
     * @param fahrgestellnummer
     *            Fahrgestellnummer des
     */

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

       super(besitzer, autotyp, farbe, erstzulassung, leistung,kmStand);
        this.standort = standort;
        this.fahrgestellnummer = fahrgestellnummer;
    }

    /**
     * Die Methode getAlter() dient zur Errechnung des Autoalters ueber die
     * Erstzulassung.
     *
     *
     */
    public int getAlter() {
        // Ermittlung des aktuellen Jahres
        Calendar aktuellerKalender = Calendar.getInstance();
        int aktuellesJahr = aktuellerKalender.get(Calendar.YEAR);
        return aktuellesJahr - this.erstzulassung;
    }

    /**
     * Die Methode meldung() gibt die Attribute "farbe" und "besitzer" auf der
     * Standardausgabe aus.
     */
    public void meldung() {
        System.out.print("Hier gruesst das " + this.farbe + "e ");
        System.out.print("Auto von " + this.besitzer + ". ");
    }

/**
     * Die Methode toString() gibt die Attribute "besitzer" und "autotyp" auf der
     * Standardausgabe aus.
     */
    public String toString(){
    return "Besitzer" + besitzer + "Autotyp" + autotyp ;

}



    /**
     * Die Methode schreibt eine Meldung auf den Bildschirm:
     *Auto fährt von [Standort] nach [Ziel].
     *Die Entfernung beträgt [Entfernung] km.
     *Die Methode speichert den neuen Standort und den neuen Kilometerstand.
     */
public void setzeNeuesZiel(String ziel, int entfernung)

   { System.out.println("Auto fährt von" + standort + "nach" + ziel + ".");
     System.out.println("Die Entfernung beträgt" + entfernung + "km.");

     this.standort = ziel;
     this.kmStand = entfernung+this.kmStand;
   }
}


[B]

Habe da anscheinend wieder irgendwelche dummen Fehler gemacht, die ich vor lauter Bäumen im Walde nicht mehr sehe.

Vielleicht mag sich das mal jemand angucken :)



Vielen Dank im Voraus!
 

MoxxiManagarm

Top Contributor
Habe da anscheinend wieder irgendwelche dummen Fehler gemacht, die ich vor lauter Bäumen im Walde nicht mehr sehe.

Vielleicht mag sich das mal jemand angucken :)
Was ist denn eigentlich das Problem?


Vielleicht könnte mir jemand nochmal sagen was das ganze mit @param auf sich hat?
Du kannst aus den Kommentaren JavaDoc generieren, also sowas wie diese Seite: https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html

@param ist einfach nur ein Hilfsmittel dafür, du beschreibst hiinter dieser Annotation den benannten Parameter und welchen Sinn er hat.
 

alex9090

Mitglied
Einmal zur Aufgabenstellung:

Ich habe 2 Dateien. EinfachesAuto.java und ErgenztesAuto.java
Java:
[/B]
import java.util.Calendar;

/**
* Klasse zum Erzeugen von Auto Objekten.
*
* @author Sandra Kaltofen
* @version 1.02, 07/2012
*/

public class EinfachesAuto {

    // Instanzvariablen
    private String besitzer;
    private String autotyp;
    private String farbe;
    private int erstzulassung;
    private int leistung;
    private int kmStand;

    /**
     * Konstruktor fuer die Klasse EinfachesAuto
     *
     * @param besitzer  Name des Autobesitzers
     * @param autotyp Typ des Autos
     * @param farbe  Farbe des Autos
     * @param erstzulassung Jahreszahl der Autozulassung
     * @param leistung PS-Zahl des Autos
     * @param kmStand Kilometerstand des Autos
     */

    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;
    }

    /**
     * Die Methode getAlter() dient zur Errechnung des Autoalters ueber die
     * Erstzulassung.
     *
     * @return int: Alter des Autos
     */
    public int getAlter() {
        // Ermittlung des aktuellen Jahres
        Calendar aktuellerKalender = Calendar.getInstance();
        int aktuellesJahr = aktuellerKalender.get(Calendar.YEAR);
        return aktuellesJahr - this.erstzulassung;
    }

    /**
     * Die Methode meldung() gibt die Attribute "farbe" und "besitzer" auf der
     * Standardausgabe aus.
     */
    public void meldung() {
        System.out.print("Hier gruesst das " + this.farbe + "e ");
        System.out.print("Auto von " + this.besitzer);
    }

}
[B]


Java:
[/B]
package de.vfh.gp1.exc.esa;

import java.util.Calendar;

/**
* Klasse zum Erzeugen eines Objekts 'Auto', baut auf 'EinfachesAuto' auf.
* 
* @author Anka Shergowski
* @version 1.01, 12/01
*/

class ErgaenztesAuto {

    // Instanzvariablen
    private String besitzer;
    private String autotyp;
    private String farbe;
    private int erstzulassung;
    private int leistung;
    private int kmStand;
    // NEUE variablen
    private String standort;
    private long fahrgestellnummer;

    /**
     * Konstrukor.
     * @throws IllegalAccessException 
     */
    public ErgaenztesAuto(String besitzer, String autotyp, String farbe,
            int erstzulassung, int leistung, int kmStand) throws IllegalArgumentException {
      if(kmStand < 0) {
        throw new IllegalArgumentException("Falscher km-Stand");
      }
        this.besitzer = besitzer;
        this.autotyp = autotyp;
        this.farbe = farbe;
        this.erstzulassung = erstzulassung;
        this.leistung = leistung;
        this.kmStand = kmStand;
    }

    /**
     * NEUER Konstruktor An erster Stelle wird der vorhandene Konstruktor
     * aufgerufen. Dadurch muss man die Attribute nicht erneut initialisieren.
     */
    public ErgaenztesAuto(String besitzer, String autotyp, String farbe,
            int erstzulassung, int leistung, int kmStand, String standort,
            long fahrgestellnummer) {
        this(besitzer, autotyp, farbe, erstzulassung, leistung, kmStand);
        this.standort = standort;
        this.fahrgestellnummer = fahrgestellnummer;
    }

    /**
     * Die Methode getAalter() dient zur Errechnung des Autoalters ueber die
     * Erstzulassung.
     * 
     * @return int: Alter des Autos
     */
    public int getAlter() {
        // Ermittlung des aktuellen Jahres
        Calendar aktuellerKalender = Calendar.getInstance();
        int aktuellesJahr = aktuellerKalender.get(Calendar.YEAR);
        return aktuellesJahr - this.erstzulassung;
    }

    /**
     * Die Methode meldung() gibt die Klassenattribute "farbe" und "besitzer"
     * auf der Standardausgabe aus.
     */
    public void meldung() {
        System.out.print("Hier gruesst das " + this.farbe + "e ");
        System.out.print("Auto von " + this.besitzer);
    }

    /**
     * Gibt die Werte der Klassenattribute als formatierten String zurŸck.
     */
    public String toString() {
        return "Besitzer: " + this.besitzer + "\nAutotyp: " + this.autotyp
                + "\nAutofarbe: " + this.farbe + "\nStandort: " + this.standort
                + "\nErstzulassung: " + this.erstzulassung + "\nLeistung: "
                + this.leistung + " PS" + "\nKilometerstand: " + this.kmStand
                + " km" + "\nFahrgestellnummer: " + this.fahrgestellnummer;
    }

    /**
     * Setzt das Klassenattribut Ziel auf den uebergeben Parameter. Erhoeht das
     * Klassenattribut kmStand um den uebergebenen Parameter entfernung
     * 
     * @param Sting
     *            ziel: wohin faehrt das Auto
     * @param int entfernung: wieviele km faehrt das Auto zum Ziel
     */
    public void setzeNeuesZiel(String ziel, int entfernung) {
        // Ausgabe auf dem Bildschirm
        System.out.println("Auto fŠhrt von " + standort + " nach " + ziel + " "
                + entfernung + " km");
        // Standort und Kilometerstand aktualisieren
        this.standort = ziel;
        this.kmStand = this.kmStand + entfernung;
    }

}



[B]
Nun soll ErgaenztesAuto.java von EinfachesAuto.java erben und die Methoden aktivieren und folgende
Attribute hinzufügen:

private String standort;
private String fahrgestellnummer;

und auch die folgenden Methoden:

  • public String toString()
    Gibt die Werte der Objektattribute als formatierten String zurück.

  • public void setzeNeuesZiel(String ziel, int entfernung)
    Die Methode schreibt eine Meldung auf den Bildschirm:
    Auto fährt von [Standort] nach [Ziel].
    Die Entfernung beträgt [Entfernung] km.
    Die Methode speichert den neuen Standort und den neuen Kilometerstand.
Und ersetzen Sie den Konstruktor, damit er alle Attribute – auch die neuen – initialisiert.
 
K

kneitzel

Gast
Und bei dem Code, den Du zuerst gepostet hast:
Ist das
Code:
public static void main(String[] args)
{

Am Anfang ein Kopierfehler? Denn das hat da natürlich nichts zu suchen. In der Vorgabe ist das ja auch nicht.

Die main Methode muss natürlich in einer Klasse sein ...
 

alex9090

Mitglied
Sooo liebe Leute, ich habe den Code jetzt noch einmal angepasst:

Superclass:
Java:
[/B]
import java.util.Calendar;


public class EinfachesAuto {

    // Instanzvariablen
    public String besitzer;
    public String autotyp;
    public String farbe;
    public int erstzulassung;
    public int leistung;
    public int kmStand;

    /**
     * Konstruktor fuer die Klasse EinfachesAuto
     *
     * @param besitzer
     *            Name des Autobesitzers
     * @param autotyp
     *            Typ des Autos
     * @param farbe
     *            Farbe des Autos
     * @param erstzulassung
     *            Jahreszahl der Autozulassung
     * @param leistung
     *            PS-Zahl des Autos
     * @param kmStand
     *            Kilometerstand des Autos
     */

    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;
    }







    /**
     * Die Methode getAlter() dient zur Errechnung des Autoalters ueber die
     * Erstzulassung.
     *
     * @return int: Alter des Autos
     */
    public int getAlter() {
        // Ermittlung des aktuellen Jahres
        Calendar aktuellerKalender = Calendar.getInstance();
        int aktuellesJahr = aktuellerKalender.get(Calendar.YEAR);
        return aktuellesJahr - this.erstzulassung;
    }

    /**
     * Die Methode meldung() gibt die Attribute "farbe" und "besitzer" auf der
     * Standardausgabe aus.
     */
    public void meldung() {
        System.out.print("Hier gruesst das " + this.farbe + "e ");
        System.out.print("Auto von " + this.besitzer);
    }


     EinfachesAuto erstesAuto = new EinfachesAuto("Klaus","Passat","blau",2002,175,25600);
     EinfachesAuto zweitesAuto = new EinfachesAuto("Frank","Mercedes","schwarz",2000,116,35600);
     EinfachesAuto drittesAuto = new EinfachesAuto("Peter","BMW","Rot",2008,225,1500);
            erstesAuto.meldung();
            zweitesAuto.meldung();
            drittesAuto.meldung();


}
[B]


Java:
[/B]
import java.util.Calendar;



public class ErgaenztesAuto extends EinfachesAuto {

    // Instanzvariablen
    /*private String besitzer;
    private String autotyp;
    private String farbe;
    private int erstzulassung;
    private int leistung;
    private int kmStand;*/
    private String standort;
    private String fahrgestellnummer;

    /**
     * Konstruktor fuer die Klasse EinfachesAuto
     *
     * @param besitzer
     *            Name des Autobesitzers
     * @param autotyp
     *            Typ des Autos
     * @param farbe
     *            Farbe des Autos
     * @param erstzulassung
     *            Jahreszahl der Autozulassung
     * @param leistung
     *            PS-Zahl des Autos
     * @param kmStand
     *            Kilometerstand des Autos
     * @param standort
     *            Standort des Autos
     * @param fahrgestellnummer
     *            Fahrgestellnummer des
     */

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

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

    /**
     * Die Methode getAlter() dient zur Errechnung des Autoalters ueber die
     * Erstzulassung.
     *
     *
     */
    public int getAlter() {
        // Ermittlung des aktuellen Jahres
        Calendar aktuellerKalender = Calendar.getInstance();
        int aktuellesJahr = aktuellerKalender.get(Calendar.YEAR);
        return aktuellesJahr - this.erstzulassung;
    }

    /**
     * Die Methode meldung() gibt die Attribute "farbe" und "besitzer" auf der
     * Standardausgabe aus.
     */
    public void meldung() {
        System.out.print("Hier gruesst das " + this.farbe + "e ");
        System.out.print("Auto von " + this.besitzer + ". ");
    }

/**
     * Die Methode toString() gibt die Attribute "besitzer" und "autotyp" auf der
     * Standardausgabe aus.
     */
    public String toString(){
    return "Besitzer" + besitzer + "Autotyp" + autotyp ;

}






    /**
     * Die Methode schreibt eine Meldung auf den Bildschirm:
     *Auto fährt von [Standort] nach [Ziel].
     *Die Entfernung beträgt [Entfernung] km.
     *Die Methode speichert den neuen Standort und den neuen Kilometerstand.
     */
public void setzeNeuesZiel(String ziel, int entfernung)

   { System.out.println("Auto fährt von" + standort + "nach" + ziel + ".");
     System.out.println("Die Entfernung beträgt" + entfernung + "km.");

     this.standort = ziel;
     this.kmStand = entfernung+this.kmStand;
   }


   ErgaenztesAuto erstesAuto = new ErgaenztesAuto("Johannes","BMW","silber",2002,130,190000,"Neustadt","100038457");
           ErgaenztesAuto zweitesAuto = new ErgaenztesAuto("Julian","VW","schwarz",2004,110,232000,"Hamburg","84743898");
           ErgaenztesAuto drittesAuto = new ErgaenztesAuto("Pedi","Daihatsu","Rot",2016,101,15000,"Lübeck","3857485");
           ErgaenztesAuto viertesAuto = new ErgaenztesAuto("Jimmy","Mercedes","Blau",2020,306,1500,"Norden","3857485");
         // erstesAuto.meldung();
         // zweitesAuto.meldung();
          // drittesAuto.meldung();


            // System.out.println(viertesAuto) ;
             // viertesAuto.toString();

         viertesAuto.setzeNeuesZiel("Neustadt",354);
}
[B]


Ich glaube das es so eigentlich funktionieren müsste. Habe die Aufgabe ja auch schon einmal ohne Vererbung gelöst.
Allerdings kann ich irgendwie die Methoden nicht aufrufen :/

fehler bei jeder .meldung() --> <identifier> expected

und illegal start of type bei viertes Auto.



Wenn da nochmal jemand rüber gucken könnte und einen Hinweis geben kann wäre ich super dankbar!
 

Schuriko

Bekanntes Mitglied
Zu "@param":

@param hat in Java (auch anderen Sprachen) keine besondere Bedeutung. Es, wird normalerweise in einem Kommentar zum Verfassen von Dokumentationen verwendet. Das Beispiel, das du bereitgestellt hast, zeigt genau das..

Wenn Du ein Dokumentationswerkzeug (wie z.B. JSDoc), wird es den Code für @param (daneben gibts noch edliche andere "@<name>" Werte) (je nach Komplexität des Dokumentation-Werkzeugs automatisch gut formatierter Code verfasst. Dient also nur den Dokumentations - Werkzeugen.

Zu deinem Problem:
Du brauchst eine Hauptklasse mit der Funktion "main" damit das Programm überhaupt weis wo dein Programm starten soll. Und hierin musst du über "new" die Klassen instanzieren.
 

Schuriko

Bekanntes Mitglied
Sooo liebe Leute, ich habe den Code jetzt noch einmal angepasst:

Superclass:
Java:
[/B]
import java.util.Calendar;


public class EinfachesAuto {

    // Instanzvariablen
    public String besitzer;
    public String autotyp;
    public String farbe;
    public int erstzulassung;
    public int leistung;
    public int kmStand;

    /**
     * Konstruktor fuer die Klasse EinfachesAuto
     *
     * @param besitzer
     *            Name des Autobesitzers
     * @param autotyp
     *            Typ des Autos
     * @param farbe
     *            Farbe des Autos
     * @param erstzulassung
     *            Jahreszahl der Autozulassung
     * @param leistung
     *            PS-Zahl des Autos
     * @param kmStand
     *            Kilometerstand des Autos
     */

    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;
    }







    /**
     * Die Methode getAlter() dient zur Errechnung des Autoalters ueber die
     * Erstzulassung.
     *
     * @return int: Alter des Autos
     */
    public int getAlter() {
        // Ermittlung des aktuellen Jahres
        Calendar aktuellerKalender = Calendar.getInstance();
        int aktuellesJahr = aktuellerKalender.get(Calendar.YEAR);
        return aktuellesJahr - this.erstzulassung;
    }

    /**
     * Die Methode meldung() gibt die Attribute "farbe" und "besitzer" auf der
     * Standardausgabe aus.
     */
    public void meldung() {
        System.out.print("Hier gruesst das " + this.farbe + "e ");
        System.out.print("Auto von " + this.besitzer);
    }


     EinfachesAuto erstesAuto = new EinfachesAuto("Klaus","Passat","blau",2002,175,25600);
     EinfachesAuto zweitesAuto = new EinfachesAuto("Frank","Mercedes","schwarz",2000,116,35600);
     EinfachesAuto drittesAuto = new EinfachesAuto("Peter","BMW","Rot",2008,225,1500);
            erstesAuto.meldung();
            zweitesAuto.meldung();
            drittesAuto.meldung();


}
[B]


Java:
[/B]
import java.util.Calendar;



public class ErgaenztesAuto extends EinfachesAuto {

    // Instanzvariablen
    /*private String besitzer;
    private String autotyp;
    private String farbe;
    private int erstzulassung;
    private int leistung;
    private int kmStand;*/
    private String standort;
    private String fahrgestellnummer;

    /**
     * Konstruktor fuer die Klasse EinfachesAuto
     *
     * @param besitzer
     *            Name des Autobesitzers
     * @param autotyp
     *            Typ des Autos
     * @param farbe
     *            Farbe des Autos
     * @param erstzulassung
     *            Jahreszahl der Autozulassung
     * @param leistung
     *            PS-Zahl des Autos
     * @param kmStand
     *            Kilometerstand des Autos
     * @param standort
     *            Standort des Autos
     * @param fahrgestellnummer
     *            Fahrgestellnummer des
     */

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

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

    /**
     * Die Methode getAlter() dient zur Errechnung des Autoalters ueber die
     * Erstzulassung.
     *
     *
     */
    public int getAlter() {
        // Ermittlung des aktuellen Jahres
        Calendar aktuellerKalender = Calendar.getInstance();
        int aktuellesJahr = aktuellerKalender.get(Calendar.YEAR);
        return aktuellesJahr - this.erstzulassung;
    }

    /**
     * Die Methode meldung() gibt die Attribute "farbe" und "besitzer" auf der
     * Standardausgabe aus.
     */
    public void meldung() {
        System.out.print("Hier gruesst das " + this.farbe + "e ");
        System.out.print("Auto von " + this.besitzer + ". ");
    }

/**
     * Die Methode toString() gibt die Attribute "besitzer" und "autotyp" auf der
     * Standardausgabe aus.
     */
    public String toString(){
    return "Besitzer" + besitzer + "Autotyp" + autotyp ;

}






    /**
     * Die Methode schreibt eine Meldung auf den Bildschirm:
     *Auto fährt von [Standort] nach [Ziel].
     *Die Entfernung beträgt [Entfernung] km.
     *Die Methode speichert den neuen Standort und den neuen Kilometerstand.
     */
public void setzeNeuesZiel(String ziel, int entfernung)

   { System.out.println("Auto fährt von" + standort + "nach" + ziel + ".");
     System.out.println("Die Entfernung beträgt" + entfernung + "km.");

     this.standort = ziel;
     this.kmStand = entfernung+this.kmStand;
   }


   ErgaenztesAuto erstesAuto = new ErgaenztesAuto("Johannes","BMW","silber",2002,130,190000,"Neustadt","100038457");
           ErgaenztesAuto zweitesAuto = new ErgaenztesAuto("Julian","VW","schwarz",2004,110,232000,"Hamburg","84743898");
           ErgaenztesAuto drittesAuto = new ErgaenztesAuto("Pedi","Daihatsu","Rot",2016,101,15000,"Lübeck","3857485");
           ErgaenztesAuto viertesAuto = new ErgaenztesAuto("Jimmy","Mercedes","Blau",2020,306,1500,"Norden","3857485");
         // erstesAuto.meldung();
         // zweitesAuto.meldung();
          // drittesAuto.meldung();


            // System.out.println(viertesAuto) ;
             // viertesAuto.toString();

         viertesAuto.setzeNeuesZiel("Neustadt",354);
}
[B]


Ich glaube das es so eigentlich funktionieren müsste. Habe die Aufgabe ja auch schon einmal ohne Vererbung gelöst.
Allerdings kann ich irgendwie die Methoden nicht aufrufen :/

fehler bei jeder .meldung() --> <identifier> expected

und illegal start of type bei viertes Auto.



Wenn da nochmal jemand rüber gucken könnte und einen Hinweis geben kann wäre ich super dankbar!
richtig, weil sie noch nicht mit "new" instanziert ist. schnelles Beispiel:
Code:
Auto auto = new Auto()
auto.machetwas();

du hast (wie es auch richtig ist) jeder Klasse deine Methoden gegeben. Alternativ hierzu wäre, wenn du eine Funktion:
Code:
class ClassA {
    public static meineMethode() {
    
    }
}
dieses wird aber bei Funktionen, nur dann verwendet, wenn du statische Variablen über Funktion verändern willst.
 
K

kneitzel

Gast
Dann mal neben dem Problem, das Schuriko schon etwas erläutert hat:

Also die Felder public zu machen ist keine gute Idee. Der erste Ansatz war schon richtig: Also z.B. im Konstruktor mit super den übergeordneten Konstruktor aufzurufen.

Und zur Erläuterung:

Dein folgender Code:
Code:
 ErgaenztesAuto erstesAuto = new ErgaenztesAuto("Johannes","BMW","silber",2002,130,190000,"Neustadt","100038457");
           ErgaenztesAuto zweitesAuto = new ErgaenztesAuto("Julian","VW","schwarz",2004,110,232000,"Hamburg","84743898");
           ErgaenztesAuto drittesAuto = new ErgaenztesAuto("Pedi","Daihatsu","Rot",2016,101,15000,"Lübeck","3857485");
           ErgaenztesAuto viertesAuto = new ErgaenztesAuto("Jimmy","Mercedes","Blau",2020,306,1500,"Norden","3857485");
         // erstesAuto.meldung();
         // zweitesAuto.meldung();
          // drittesAuto.meldung();


            // System.out.println(viertesAuto) ;
             // viertesAuto.toString();

         viertesAuto.setzeNeuesZiel("Neustadt",354);

ist ja das, was Du gerne ausführen möchtest. Das ist genau das, was in eine main Methode müsste.

Die Deklarationen von Variablen haben keine Fehler gegeben, denn das waren dann einfach nur Variablen der Instanz.
Die Aufrufe selbst sind so in Java nicht erlaubt. Code sollte in einer Methode stehen (Ausnahmen ignorieren wir einfach einmal...)
 

mihe7

Top Contributor
Also quasi so: public static void main(String[] args){ quellcode } ?
Ja. Der "java"-Befehl erwartet als Argument den Namen einer Klasse, die genau eine solche main-Methode enthält. Das ist notwendig, damit die Java Virtual Machine weiß, wo Dein Programm "anfängt", d. h. welche Methode zuerst ausgeführt werden soll.
 

temi

Top Contributor
Habe die Aufgabe ja auch schon einmal ohne Vererbung gelöst.
Dazu musst du doch auch schon eine main() gehabt haben, oder?

Warum hast du plötzlich Verständnisprobleme damit?

Aber noch einmal zur Verdeutlichung, du solltest am Ende drei Klassen haben:
Code:
class Foo { }

class Bar extends Foo { }

//wie du die Klasse nennst ist deine Sache
class Main {
   
    // diese Methode ist der Einstiegspunkt für das Programm und muss existieren
    public static void main(String[] args) {
        Foo foo = new Foo();
        Bar bar = new Bar();
       
        // mach was mit foo und bar
    }
   
}

Ausgeführt wird die Klasse Main!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Klassen und Vererbung Java Basics - Anfänger-Themen 2
A Klassen Vererbung und zusätzliche Unterklassen Java Basics - Anfänger-Themen 23
A Vererbung bei Klassen mit Objekt der Klasse im Konstruktor Java Basics - Anfänger-Themen 4
F Vererbung von Attributen zwischen zwei Klassen Java Basics - Anfänger-Themen 6
J Vererbung Hilfe zu Klassen / Vererbung Java Basics - Anfänger-Themen 12
K Vererbung equals-Methode bei Vererbung abstrakter Klassen Java Basics - Anfänger-Themen 8
J Klassen, Unterklassen, Vererbung - Compilerfehler Java Basics - Anfänger-Themen 11
Y Klassen, Vererbung, Konstruktoren Java Basics - Anfänger-Themen 13
T Vererbung und Zugriff auf Methoden von abgeleiteten Klassen Java Basics - Anfänger-Themen 2
L Vererbung - Wie Objekte verschiedener Klassen unterscheiden Java Basics - Anfänger-Themen 3
maddin86 Klassen und Vererbung Java Basics - Anfänger-Themen 15
berliner Klassen Vererbung und Zugriff auf innere private Variable Java Basics - Anfänger-Themen 22
D Zusammenfassung von Klassen (Vererbung? Abstrakte Klass? ...?) Java Basics - Anfänger-Themen 8
N Klassen Vererbung aus KlassenBibliothek (jar) Java Basics - Anfänger-Themen 3
C Klassen/Vererbung/Exception Java Basics - Anfänger-Themen 2
L Klassen/Methoden/Objekt/Vererbung Java Basics - Anfänger-Themen 6
frau-u Problem mit Klassen und Vererbung - benutzen von Methoden Java Basics - Anfänger-Themen 2
L Klassen, Vererbung und Konstruktoren Java Basics - Anfänger-Themen 10
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
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
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
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

Ähnliche Java Themen

Neue Themen


Oben