Vererbung Klassen im Bezug auf Auto´s

Diskutiere Vererbung Klassen im Bezug auf Auto´s im Java Basics - Anfänger-Themen Bereich.
A

alex9090

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

MoxxiManagarm

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.
 
A

alex9090

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.
 
J

JustNobody

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 ...
 
A

alex9090

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!
 
S

Schuriko

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.
 
S

Schuriko

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.
 
A

alex9090

Irgendwie scheint das auch nicht die Lösung zu sein.. Irgendwas haut einfach mit den Meldungen nicht hin :/
 
J

JustNobody

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

mihe7

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.
 
T

temi

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!
 
Thema: 

Vererbung Klassen im Bezug auf Auto´s

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben