Unbekannter "Konstruktor"??

ChrSli5385

Mitglied
Hallo liebe Java Freunde, ich frage mich wo der Unterschied liegt zu folgenden Codeteilen: stellen beide Codeabschnitte nicht einfach einen Konstruktor dar? Vielen Dank im Voraus!




Code:
public Smart(String fahrgestellNummer, int kilometerstand)
    {
       
        setFahrgestellNummer(fahrgestellNummer);
        setKilometerstand(kilometerstand);
        setseriennummer();

        /*  Codeteil 2 Unterschied wenn:
Smart( int fahrgestelnummer, int kilometerstand) {
        this.fahrgestelnummer = fahrgestelnummer;
        this.kilometerstand = kilometerstand;
        this.seriennummer = seriennummer;
}
        */
    }
 

httpdigest

Top Contributor
Also, nochmal richtig formatiert, lautet deine Frage, worin der Unterschied zwischen:
Java:
public Smart (String fahrgestellNummer, int kilometerstand) {
  setFahrgestellNummer(fahrgestellNummer);
  setKilometerstand(kilometerstand);
  setseriennummer();
}
und:
Java:
Smart (int fahrgestelnummer, int kilometerstand) {
  this.fahrgestelnummer = fahrgestelnummer;
  this.kilometerstand = kilometerstand;
  this.seriennummer = seriennummer;
}
besteht?
 

LimDul

Top Contributor
Mal abgesehen davon, dass Seriennummer fehlt als Parameter.

- Ja, beides sind Konstruktoren
- Der zweite ist (sofern es kein Copy & Paste Fehler ist) allerdings nur package visible, während der erste public ist
- Man sollte im Konstruktor keine Methoden (außer private & final methoden) aufrufen, dass kann leicht zu sehr strangen Verhalten führen, wenn man die Klasse ableitet.
 

ChrSli5385

Mitglied
LimDul, vielen Dank vorerst für deine Antwort. Kannst Du mir auch sagen warum dieser nur package visible ist? whs. wegen dem this keywort, richtig? Was meinst du mit strengem Verhalten? DAnke im Voraus
 

LimDul

Top Contributor
Bzgl. seltsamen (=Strange) nicht strengen Verhalten. Nimm mal folgenden Code:

Java:
public class Oberklasse {

    public Oberklasse() {
        macheWasImKonstruktor();
    }

    protected void macheWasImKonstruktor() {
        // Doch nix
    }

}

public class Unterklasse extends Oberklasse {

    private int feld = 10;

    @Override
    protected void macheWasImKonstruktor() {
        feld++;
    }

    public int getFeld() {
        return feld;
    }

    public static void main(String[] args) {
        Unterklasse unterklasse = new Unterklasse();
        System.out.println(unterklasse.getFeld());
    }

}

Was würdest du erwarten wird ausgegeben?
 

LimDul

Top Contributor
In einer besseren Welt eine Warnung oder ein Fehler :p
Die hatte ich in Eclipse auch (Entweder Checkstyle oder Spotbugs, wer genau weiß ich nicht mehr)

Nochmals vielen Dank für die prompte Antwort LimDul. Ich würde eine den Wert 11 erwarten :D
Kommt aber 10 raus.

Der Punkt ist, erst wird der Konstruktor der Oberklasse aufgerufen und abgearbeitet, bevor die Unterklasse initialisiert wird. Das heißt, das Feld wird erst auf 10 gesetzt, nachdem der Konstruktor der Oberklasse fertig ist. Der wiederum ruft eine Methode auf, die allerdings überschrieben ist. Zu diesem Zeitpunkt ist feld noch noch nicht initialisiert und hat den Defaultwert 0 (Objekte wären null und eine wunderbare Quelle für NullPointerExceptions). Danach kommt die Initialisierung der Unterklasse und setzt das feld auf 10. Deswegen sollte man nie eine Methode in einem Konstruktor aufrufen, die überschrieben werden kann. Weil intuitiv ist das Verhalten nicht.
 

Barista

Top Contributor
Ich finde das Verhalten des Java-Compilers, bei falschen Parametern eines Konstruktors "Unbekannter Konstruktor" zu melden, sehr ärgerlich.

Bei Methoden gibt es Hinweise auf den falschen Parametern.

Deshalb packe ich bei der Suche nach solchen Fehlern die Konstruktoren ind statische Methoden ein, dann hilft der Compiler bei der Fehlersuche.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
ArrayList mit unbekannter Menge an Arrays die Arrays vergleichen Java Basics - Anfänger-Themen 9
A Unbekannter Array fehler Java Basics - Anfänger-Themen 10
L Variablen Unbekannter Fehler Java Basics - Anfänger-Themen 14
L Operatoren Übungsklausuraufgabe, unbekannter Operator Java Basics - Anfänger-Themen 13
elischa unbekannter Befehl zur Compilezeit Java Basics - Anfänger-Themen 22
N Datentypen Frage bezüglich unbekannter Fehlermeldungen. Java Basics - Anfänger-Themen 1
C Intelligentes Erstellen von Formel mit unbekannter Variable Java Basics - Anfänger-Themen 37
R Array mit unbekannter Dimension Java Basics - Anfänger-Themen 6
N Array bei unbekannter Länge Java Basics - Anfänger-Themen 4
F Variablen von unbekannter Anzahl deklarieren Java Basics - Anfänger-Themen 9
J Arrays mit unbekannter Länge Java Basics - Anfänger-Themen 2
G String.insert an unbekannter Stelle Java Basics - Anfänger-Themen 5
G Char oder Byte Array mit unbekannter länge erstellen? Java Basics - Anfänger-Themen 1
W Null-Pointer trotz Konstruktor? Java Basics - Anfänger-Themen 9
M Konstruktor-Aufruf im Konstruktor, aber nicht am Anfang? Java Basics - Anfänger-Themen 4
T Schlüsselworte Schlüsselwort this im Konstruktor Java Basics - Anfänger-Themen 3
frager2345 Warum muss ich hier im Konstruktor meine Exeption nicht abfangen ? Java Basics - Anfänger-Themen 4
J Konstruktor Java Basics - Anfänger-Themen 18
frager2345 Java Singleton Muster -> Methode für Konstruktor mit Parametern Java Basics - Anfänger-Themen 3
G Welche Attribute kommen in den Konstruktor? Java Basics - Anfänger-Themen 5
M wird der Konstruktor nicht als 1. ausgeführt? Java Basics - Anfänger-Themen 13
G Konstruktor und update Java Basics - Anfänger-Themen 4
K Kopier-Konstruktor Java Basics - Anfänger-Themen 6
S Default Konstruktor Java Basics - Anfänger-Themen 7
M Konstruktor ohne Übergabe eines Wertes Java Basics - Anfänger-Themen 7
M Wie kann ich in einem Konstruktor die Methode eines anderen Interfaces mit den jeweiligen Parametern aufrufen? Java Basics - Anfänger-Themen 8
J Vier gewinnt in Java,Spieler Konstruktor Java Basics - Anfänger-Themen 8
kxrdelis Konstruktor für ein Rechtwinkliges Dreieck Java Basics - Anfänger-Themen 10
Zeppi OOP Bruch kürzen im Konstruktor Java Basics - Anfänger-Themen 2
HorstSchröder Konstruktor mit Initialwert Java Basics - Anfänger-Themen 1
C Konstruktor ab serialisiertem Objekt Java Basics - Anfänger-Themen 4
J Input/Output Konstruktor ergänzen, der zur Datei mit einem Objekt passt Java Basics - Anfänger-Themen 0
InfinityDE Problem mit Datenübergabe an Konstruktor Java Basics - Anfänger-Themen 7
B Konstruktor mit Array als Parameter Java Basics - Anfänger-Themen 3
G Variablen Array Länge über den Konstruktor definieren Java Basics - Anfänger-Themen 4
L Konstruktor für eine Map-Datei/Map-Datei einlesen Java Basics - Anfänger-Themen 5
C Interface und Konstruktor Java Basics - Anfänger-Themen 1
H Generische Konstruktor Java Basics - Anfänger-Themen 12
MiMa Seltsames Verhalten im Konstruktor Java Basics - Anfänger-Themen 6
S Konstruktor passt nicht zum Rest Java Basics - Anfänger-Themen 11
W OOP Warenlager mit Array(Konstruktor, Methoden) Java Basics - Anfänger-Themen 39
R Objekt in Konstruktor ist nicht zulässig Java Basics - Anfänger-Themen 5
A Mit einer Methode den Konstruktor aufrufen? Java Basics - Anfänger-Themen 2
B Warum können super() und this() nicht gemeinsam in einem Konstruktor verwendet werden? Java Basics - Anfänger-Themen 7
K Konstruktor für ein Objekt mit Zugriffsmethoden Java Basics - Anfänger-Themen 7
H Unterschied Konstruktor und Klassenname x = new Klassenname; Java Basics - Anfänger-Themen 3
B Klassen Array Parameter im Konstruktor? Java Basics - Anfänger-Themen 4
E Konstruktor mit Methode Java Basics - Anfänger-Themen 7
E ArithmeticException im Konstruktor Java Basics - Anfänger-Themen 4
S Konstruktor, Objekte Java Basics - Anfänger-Themen 4
F Konstruktor richtig implementiert? Frage zu Benutzereingaben... Java Basics - Anfänger-Themen 9
W Typecastin im Konstruktor? Java Basics - Anfänger-Themen 2
A Variablen Variablenwert über Konstruktor ändern Java Basics - Anfänger-Themen 3
F Arrays im Konstruktor Java Basics - Anfänger-Themen 5
C Konstruktor mit und ohne Parameterliste Java Basics - Anfänger-Themen 13
L Instanzvariablen, Veerbung, Konstruktor Java Basics - Anfänger-Themen 32
E Best Practice Konstruktor mit bestehender Intanz der gleichen Klasse aufrufen Java Basics - Anfänger-Themen 4
E Plausibilitätsprüfung in dem Konstruktor mit Ausnahmebehandlung Java Basics - Anfänger-Themen 8
A Aufruf von Konstruktor , obwohl 2 Parameter weggelassen werden Java Basics - Anfänger-Themen 7
A Aufruf von Konstruktor , obwohl 2 Parameter weggelassen werden Java Basics - Anfänger-Themen 0
D Compiler-Fehler Konstruktor von Superklasse übernehmen Java Basics - Anfänger-Themen 1
P Counter im Konstruktor Java Basics - Anfänger-Themen 11
J toString-Methode in Verbindung mit varArgs-Konstruktor Java Basics - Anfänger-Themen 18
I Einträge in den Konstruktor Java Basics - Anfänger-Themen 3
Aprendiendo [JAVA-Syntax] (int... variable) bei einem Konstruktor Java Basics - Anfänger-Themen 8
J Superklassen Konstruktor Verständnisfrage Java Basics - Anfänger-Themen 1
G Int-Array im Konstruktor Parameter Java Basics - Anfänger-Themen 37
T Datentypen Warum mit Konstruktor Objektvariablen initalisieren? Java Basics - Anfänger-Themen 19
A Vererbung bei Klassen mit Objekt der Klasse im Konstruktor Java Basics - Anfänger-Themen 4
P Konstruktor. Java Basics - Anfänger-Themen 4
D Best Practice Objekt automatisch im Konstruktor füllen? Java Basics - Anfänger-Themen 9
D Objekt oder Konstruktor Java Basics - Anfänger-Themen 2
F Java default Konstruktor Java Basics - Anfänger-Themen 1
R Fragen über den Konstruktor Java Basics - Anfänger-Themen 0
T Konstruktor mit Referenzdatentypen Java Basics - Anfänger-Themen 5
H Klassen Konstruktor Parameter als Instanzvariablen zwischen speichern... Java Basics - Anfänger-Themen 11
T setter im Konstruktor einbauen? Java Basics - Anfänger-Themen 8
R ArrayList im Konstruktor. Java Basics - Anfänger-Themen 4
T Konstruktor Probleme Java Basics - Anfänger-Themen 3
J Wie lässt sich der Konstruktor einer Klasse einer Funktion einer Klasse nutzen. Java Basics - Anfänger-Themen 4
S Variable, die im Konstruktor gesetzt wird, wird nicht gefunden vom Compiler. Java Basics - Anfänger-Themen 4
C Generic im Konstruktor Java Basics - Anfänger-Themen 1
F Privater Konstruktor und statische Methoden Java Basics - Anfänger-Themen 4
W Konstruktor von FileInputStream nicht gefunden Java Basics - Anfänger-Themen 18
B Methoden Konstruktor im Konstruktor aufrufen Java Basics - Anfänger-Themen 2
N Aufgabe: Pizza Konstruktor mit mehreren beliebigen Durchmesser/Preiskombinationen Java Basics - Anfänger-Themen 8
K arraygröße durch variablen Konstruktor? Java Basics - Anfänger-Themen 7
K ArrayList in Konstruktor - wie späterer Zugriff Java Basics - Anfänger-Themen 2
G Verwendung von Konstruktor Java Basics - Anfänger-Themen 8
X Übergabeparameter Konstruktor (File) Java Basics - Anfänger-Themen 13
K Wieso muss man finale statische Variablen sofort oder eben im Konstruktor initialisieren? Java Basics - Anfänger-Themen 2
C Konstruktor in Abstrakten Klassen Java Basics - Anfänger-Themen 4
B Konstruktor Problem Java Basics - Anfänger-Themen 8
Joew0815 konstruktor und damit erstellte objekte Java Basics - Anfänger-Themen 1
K Hashtable mit eigenen Konstruktor Java Basics - Anfänger-Themen 2
S Java Fragen Konstruktor & Statische Methoden Java Basics - Anfänger-Themen 4
H Fehler im Konstruktor abfangen Java Basics - Anfänger-Themen 10
J Konstruktor Problem bei Vererbung Java Basics - Anfänger-Themen 1
I Java Eingabe aus einer anderen Klasse in eine andere an Konstruktor übergeben Java Basics - Anfänger-Themen 4
O Konstruktor und Default Konstruktor Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben