Constructor wird nicht anerkannt

  • 5 Antworten
  • Letztes Antwortdatum
4

453202

Gast
Habe einen Constructor Person(int Zahl) definiert, der eine int als Argument annimmt.
Wenn ich diesen benutze mit new Person(5), heißt es, dass der Constructor Person() nicht mit einer int als Argument benutzt werden kann.
Der Compiler meint also, dass er den Constructor Person() benutzen müsste, und nicht meinen definierten, Person(int Zahl).
Was kann ich da falsch gemacht haben?
Es scheint, als würde der Compiler nur den default Constructor benutzen und meinen eigenen gar nicht anzuerkennen...
 
Hallo da wäre der Aufbau der Klasse Code sinnvoll auch wie du das Objekt erstellen willst. So ganz ohne Code ist hier hilfe schwierig.

Als erstes würde ich Tipfehler groß kleinschreibung...... Vermuten.

Ich hoffe das du dem Überladenen Constructor nicht die Annotationen „@ override“ gegeben hast.
Wen ja ist das in dem Fall falsch. Deine eventuelle Oberklasse besitzt den ja gar nicht.
Der kann also nicht in der SuperKlasse Override werden.


Sollte deine klasse gar nicht erben braucht du die Annotationen auch nicht.
Ist bei einer Klasse die nicht extends (erbt) nicht notwendig darf dann auch nicht sein.
 
Zuletzt bearbeitet:
Habe den Fehler gefunden, ich habe meinen Constructor mit Rückgabewert void angegeben, deshalb hat der Compiler den Constructor für eine Methode gehalten und hat dann beim Erstellen der Instanz der Klasse mit Übergabewert einfach den Default-Constructor verwendet, der ja keine Argumente annehmen kann.

Warum heißt eigentlich der Constructor der Activity-Klasse 'onCreate' und nicht Activity()?
 
onCrade ist kein Konstruktor sondern eine System callback Methode. Android ist ein Framework mit einigen Eigenheiten das ist eine davon.
Die Activity ist eigentlich eine klasse die in den framework läuft. Die Instanz dieser Klasse wird vom System selber erzeugt. Es wird vom System ein eigener Constructor verwendet der das Objekt erzeugt.
Das ist anders als in Java. Es gibt auch keine Main Methode wie bei einem kaschischen Java Projekt.
 
Dachte ich eigentlich auch mit onCreate...
Wozu dient eigentlich die super onCreate Methode? Warum wird sie aufgerufen?

Und es gibt anscheinend auch einen super Constructor, verstehe beides nicht so richtig...
 
Wozu dient eigentlich die super onCreate Methode? Warum wird sie aufgerufen?

Was bei Java die Super Klasse ist sollte dir eigentlich bekannt sein zu mindestens wenn du die Grundlagen der OOP kennst.

Mit SuperKlasse wird die Klasse bezeichnet von der du erbst (extendest).
Du erbst von der Klasse Activty und da gibst es auch eine onCreate Methode. Du hast ja auch ´genau diese Methode überschieben (Override) und mit super rufst du die ursprüngliche Methode aus der geerbten Klasse auf.


Und es gibt anscheinend auch einen super Constructor, verstehe beides nicht so richtig...

Denn wird es auch geben nur ist der für dich uninteressant. Da das Objekt die Instant der Activity von Android also dem Framework erstellt wird.

Ein Constrictor wird ja immer nur dann aufgerufen wen du ein Objekt mit „new“ erstellst.
Das Objekt Activity wird vom System erstellt, wie das genau geht welchen Konstrucktor android benutzt ist für dich zu mindestens als Java Anfänger Untinteresant. Geht Hier auch etwas zu weit.


Die onCreate ist nicht die einzige Methode die beim erstellen der Activity aufgerufen wird, schaue dir den Lifecycle an.

Wie ich schon sagte ist die onCreate kein Constructor sondern eine Callback Methode die aus einen Interface stammt die Activity importiert. Und da du davon erbst ist sie auch in deiner Klasse verfügbar. Und muss Überschrieben werden.



Ich glaube du solltest dir nochmal die Grundlagen der OOP Programmierung anschauen.
Auch den LifeCycle eine Activity um es besser zu verstehen.

Understand the Activity Lifecycle | Android Developers
 
Zurück
Oben Unten