1. #1
    Cadet 3rd Year
    Dabei seit
    Jan 2003
    Ort
    Hessen
    Beiträge
    40

    [Java] Problem mit extends

    Hi folgendes Problem,

    ich dümpel mich gerade ein wenig durch ein Java-Tutorial und habe mir eine eigene Klasse erstellt... (wuuuhuuu gut gell ;o)).
    Eine neue Klasse soll die Eigenschaften der bestehenden Klasse übernehmen.

    Also habe ich mittels des Schlüsselworts "extends" die bestehende Klasse eingebunden.
    Es klappt auch fast wunderbar mit der Ausnahme, dass ich jetzt folgende Fehlermeldung erhalte:

    Code:
    Implicit super constructor HelloWorld() is undefined for default constructor. Must define an explicit constructor
    HelloWorld ist dabei eine bestehende Klasse.

    Die neue Klasse habe ich folgendermassen erstellt:

    Code:
    class Auto extends HelloWorld {
    
    }
    ... mehr noch nicht... was ist daran fehlerhaft?
    Könnt ihr mir helfen? Wäre super... vielen Dank schon mal im voraus und schönes We!!!

    Gruss
    Manuel

  2. Anzeige
    Logge dich ein, um diese Anzeige nicht zu sehen.
  3. #2
    Lt. Commander
    Dabei seit
    Jul 2001
    Ort
    D:\BW\Stuttgart
    Beiträge
    2.012

    Re: [Java] Problem mit extends

    Hat die Klasse HelloWorld denn einen Leerkonstruktor, also HelloWorld() ?
    Weil, wenn die Superklasse keinen Default, bzw Leerkonstruktor hat, kann sie nicht extended werden.
    System: Intel C2Q 8300, Asus P5QL-E, 4GB, HD4670, Samsung 830 256GB SSD, Samsung F1 640GB, Samsung 500GB, Windows 7 x64 Professional, HP ZR 2440w.
    Multimedia: Yamaha RX-V473, 2x Canton GLE 490, Asus O!Play Air, Panasonic DMR EH 495 an einem Toshiba Regza 26A300P. Storage übernimmt ein Synology DS-211j mit 2x 3TB im RAID1.
    + Richtig Posten + Probleme mit Partitionen? + Du suchst einen Dateimanager? + Probleme mit Hardware sicher entfernen? +

  4. #3
    Cadet 3rd Year
    Ersteller dieses Themas

    Dabei seit
    Jan 2003
    Ort
    Hessen
    Beiträge
    40

    Re: [Java] Problem mit extends

    Hi ...

    danke schon mal für die schnelle Hilfe...
    ich habe zwei Konstruktoren selber erstellt. Ich dachte einen Default-Konstruktor gibt es immer? Bzw. ok...gibt es dann wenn kein anderer angegeben wird...

    aber was hab ich dann jetzt falsch gemacht? Ich habe zwei Konstruktoren selber erstellt...

    sieht folgendermassen aus...:

    Code:
    public class HelloWorld 
    {
    
        public String 	Autoname;
        public int 		Erstzulassung;
        public int 		Leistung;
        
        public HelloWorld(String Name){
            this.Autoname = Name;
        }
        
        public HelloWorld(String Name, int Erstzulassung, int Leistung)
        {
            this.Autoname = Name;
            this.Erstzulassung = Erstzulassung;
            this.Leistung = Leistung;
        }
        
        public void AutoAlter(int anzahl)
        {
            while (anzahl-- > 0)
            {
                System.out.println("Autoalter: " + (2005 - Erstzulassung) + " Jahre");
            }    
        }
        
    	public static void main(String[] args)  
    	{
    	    HelloWorld einAuto = new HelloWorld("Opel Corsa", 1800, 120);
    	    System.out.println("Autotyp: " + einAuto.Autoname);
    	    System.out.println("Erstzulassung: " + einAuto.Erstzulassung);
    	    System.out.println("Leistung: " + einAuto.Leistung);	   
    	}
    }
    kein sinnhafter code...wollte einfach nur bisi üben...aber wo ist da jetzt mein denkfehler..danke schon mal

  5. #4
    Lt. Commander
    Dabei seit
    Jul 2001
    Ort
    D:\BW\Stuttgart
    Beiträge
    2.012

    Re: [Java] Problem mit extends

    Du brauchst einen Konstruktor, der keine Parameter annimmt, einen Leerkonstruktor also:
    public HelloWorld(){
    this(null);
    }
    oder
    public HelloWorld(){
    this.Autoname = null;
    }
    System: Intel C2Q 8300, Asus P5QL-E, 4GB, HD4670, Samsung 830 256GB SSD, Samsung F1 640GB, Samsung 500GB, Windows 7 x64 Professional, HP ZR 2440w.
    Multimedia: Yamaha RX-V473, 2x Canton GLE 490, Asus O!Play Air, Panasonic DMR EH 495 an einem Toshiba Regza 26A300P. Storage übernimmt ein Synology DS-211j mit 2x 3TB im RAID1.
    + Richtig Posten + Probleme mit Partitionen? + Du suchst einen Dateimanager? + Probleme mit Hardware sicher entfernen? +

  6. #5
    Cadet 3rd Year
    Ersteller dieses Themas

    Dabei seit
    Jan 2003
    Ort
    Hessen
    Beiträge
    40

    Re: [Java] Problem mit extends

    wieso brauche ich das? sorry, wenn ich so doof nachfrage...aber ich find hier grade mal keine erklärung...

    wenn ich keinen bestimmten konstruktor angegeben hätte würde es funktionieren oder wie? weil er dann den default verwendet?

  7. #6
    Lt. Commander
    Dabei seit
    Jul 2001
    Ort
    D:\BW\Stuttgart
    Beiträge
    2.012

    Re: [Java] Problem mit extends

    Klappt es denn so?
    Ich weiss auch nicht genau, aber ich hatte das Problem auch schon und damit gelöst bekommen.
    Wenn du von einer Klasse erbst, muss diese einen Leerkonstruktor haben, damit in der Unterklasse dein Konstruktor den der Superklasse "überschreiben" kann.
    Sonst weiss der Compiler nicht, welchen anderen Konstruktor mit welchen Werten er nehmen soll.
    System: Intel C2Q 8300, Asus P5QL-E, 4GB, HD4670, Samsung 830 256GB SSD, Samsung F1 640GB, Samsung 500GB, Windows 7 x64 Professional, HP ZR 2440w.
    Multimedia: Yamaha RX-V473, 2x Canton GLE 490, Asus O!Play Air, Panasonic DMR EH 495 an einem Toshiba Regza 26A300P. Storage übernimmt ein Synology DS-211j mit 2x 3TB im RAID1.
    + Richtig Posten + Probleme mit Partitionen? + Du suchst einen Dateimanager? + Probleme mit Hardware sicher entfernen? +

  8. #7
    Lt. Commander
    Dabei seit
    Mai 2004
    Beiträge
    1.268

    Re: [Java] Problem mit extends

    1. Kein default-Konstruktor in beiden Klassen definiert und die Oberklasse hat auch sonst keine Konstruktoren-> ok, Java erzeugt Default-Konstruktoren.
    2. Sobald aber die Oberklasse einen nicht-Default-Konstruktor erhält und keinen Default-Konstruktor explizit hingeschrieben bekommt, dann erhältst Du besagte Fehlermeldung.

    Beispiele:

    ok:
    Code:
    public class HelloWorld {}
    
    public class Auto extends HelloWorld {}
    auch ok:
    Code:
    public class HelloWorld {
    public HelloWorld() {}	
    }
    
    public class Auto extends HelloWorld {}
    ebenfalls ok:
    Code:
    public class HelloWorld {
    public HelloWorld() {}	
    }
    
    public class Auto extends HelloWorld {
    public Auto(){}
    }
    falsch:
    Code:
    public class HelloWorld {
    public HelloWorld(String s() {}	
    }
    
    public class Auto extends HelloWorld {
    }

    auch falsch:
    Code:
    public class HelloWorld {
    public HelloWorldString s() {}	
    }
    
    public class Auto extends HelloWorld {
    public Auto(){}
    }
    so geht es wieder:
    Code:
    public class HelloWorld {
    public HelloWorld(){}
    public HelloWorldString s() {}	
    }
    
    public class Auto extends HelloWorld {
    public Auto(){}
    }
    bzw. so:
    Code:
    public class HelloWorld {
    public HelloWorld(){}
    public HelloWorldString s() {}	
    }
    
    public class Auto extends HelloWorld {
    
    }
    Manchmal müssen Männer Dinge tun, die sie nicht tun wollen, damit Frauen Dinge tun, die sie nicht tun wollen.

  9. #8
    Lt. Commander
    Dabei seit
    Jul 2001
    Ort
    D:\BW\Stuttgart
    Beiträge
    2.012

    Re: [Java] Problem mit extends

    Genau so meinte ich das ;-)
    War bloss zu faul, das alles so wunderbar aufzuschreiben.
    System: Intel C2Q 8300, Asus P5QL-E, 4GB, HD4670, Samsung 830 256GB SSD, Samsung F1 640GB, Samsung 500GB, Windows 7 x64 Professional, HP ZR 2440w.
    Multimedia: Yamaha RX-V473, 2x Canton GLE 490, Asus O!Play Air, Panasonic DMR EH 495 an einem Toshiba Regza 26A300P. Storage übernimmt ein Synology DS-211j mit 2x 3TB im RAID1.
    + Richtig Posten + Probleme mit Partitionen? + Du suchst einen Dateimanager? + Probleme mit Hardware sicher entfernen? +

  10. #9
    Lt. Commander
    Dabei seit
    Mai 2004
    Beiträge
    1.268

    Talking Re: [Java] Problem mit extends

    Richtig, Du hast eigentlich mit Deinem ersten Posting schon alles erklärt.
    Aber oft sieht man den Wald vor lauter Bäumen nicht, deswegen bin ich mal konkret™ geworden.
    Manchmal müssen Männer Dinge tun, die sie nicht tun wollen, damit Frauen Dinge tun, die sie nicht tun wollen.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •