wenn auch schon oft gefragt (Konstruktor , Instanzen , usw)

  • Themenstarter Themenstarter Guest
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo Ihr netten Leute hier ich weiss ich gehe euch jetzt bestimmt auf den Nerv aber kann sich einer vielleicht doch noch mal erbahrmen und einem Anfänger ein paar FRagen beantworten aber bitte

Nicht auf ein Buch verweisen und es bitte bitte sooo einfach wie möglich erklären;-)) ja?

Also was ist ein Konstruktor? Wann brauch ich ihn wie schreibt man ihn wie benutzt man ihn?


Und wo ist denn der unterschied zwischen Variablen und Instanzvariablen?

Und wo bei Methoden und Instanzmethoden?
Genauso warum gibt es methoden die keine Parameter übergeben bekommen ,die aber zum Beispiel mit einem Text machen irgendwas machen . Ich dachte ich muss einer Methode dann auch den text übergeben ;-(


Ich versteh des echt net;_( danke schon mal aber bitte bitte absolute leihe keine Ahnung vom Programieren also bitte versucht es echt mal für dumme ja? als wenn ihr es nem KInd erklärt;-(
 
Okay, bin zwar selba ein n00b 😳 aber eine Antwort habe ich, näHHHmlich zum Thema Konstruktor!
Das JAVA eine objektorientierte Sprache ist weißt du hoffe ich. Bedeudet: Man legt Objekte an und arbeitet mit ihnen.
Und BEIM anlegen tritt der Konstruktor in Kraft. Immer wenn du ein Objekt erstellst mit
Klassenname Objektname = new Klassenname(Parameterliste)
wird der Konstruktor aufgerufen und zwar mit den Parametern die du in der Parameterliste angibst.
Den Konstruktor selbst erstellst du so (ich schreib da mal eine kleine Klasse hin):
Code:
class test{
//Hier werden die Attribute des Objekts Test festgelegt
int ErsteZahl, ZweiteZahl;

//das ist der Konstruktor
public test(int Zahl1, int Zahl2){
  this.ErsteZahl = Zahl1;
  this.ZweiteZahl = Zahl2;
}

//das ist eine Methode die einfach die Zahlen ausgibt
public String ausgabe(){
  return("Die Zahlen lauten " + this.ErsteZahl + " und " + this.ZweiteZahl + "!");
}

//jetzt kommt die Main
public static void main(String[] args){

//Objekt anlegen
//hier wird der Konstruktor aufgerufen (bei new)
  test DasIstDasObjekt = new test(1, 2);

//jetzt noch (testweise) die Zahlen ausgeben
  System.out.println(DasIstDasObjekt.ausgabe());
}
}

Wie du siehst erstellt man einen Konstruktor so wie eine normale Methode mit public nur dass er den SELBEN Namen haben muss wie die Klasse (hier test)
Und Sobald du mit NEW ein neues Objekt der Klasse anlegst wird der Konstruktor aufgerufen und das Objekt erstellt.

Ich hoffe ich konnte die helfen, ist im Prinzip eh ned soo schwer!

(ich weiß ned wieso der Code nur grün ist... 😀)

grüße Steve
 
hm okay:
this ist ein sysnonym das auf das objekt weist dass die methode ausführt.
ich versuche das ma zu erklären:
du definierst methoden in klassen. die methoden können nicht ausgeführt werden wenn du kein objekt von der klasse hast (ausser sie sind mit static definiert...). Wenn du jetzt ein objekt von der klasse anlegst und es objekt1 nennst und noch eins erstellst mit dem namen objekt2 hast du folgendes problem, wenn du eine methode hast die einen wert von einem objekt zurückliefern soll. woher soll die methode wissen welches objekt gemeint ist? deswegegn schreibst du this. wenn die methode dann mit objekt1.methode() aufgerufen wird weiß das prog. dann dass die attribute von objekt1 gemeint sind (wenn du in der methode this.attribut1 hast). jedes this wird also durch den objektnamen ersetzt der die merthode ausführt. wenn du dass verstehst kann du dir nochma die 2. zeile meiner "wahnsinnig tollen" erklärung anschauen und müsstes ihn verstehen!

grüße, Steve
 
mmhh ja aber es ist doch immer ein unterschied zwischen objekt1 und bjekt2......das weisss die methode doch waas ich meine oder net
 
ja.. erm, ich erklär von anfang an!
du bist der progger. du willst eine klasse machen die eine methode hat die ein bestimmtes attribut eines objekts ausgeben soll. du willst dass diese methode für jedes objekt funktioniert also kannst du in der methode nicht
return (objekt1.attribut) schreiben weil sonst immer das selbe rauskommen würde, auch wenn objekt2 die methode ausführt. deswegen THIS.
wenn du return (this.attribut) schreibst gibt die methode den wert des attributes des objektes das die methode ausführt zurück! hoffe es wird langsam klar!

grüße, Steve! 8)
 
High!
Ich glaube, die fehlt ein grundlegendes Verständnis der Objektorientierten Programierung (OOP) -> keine Sorge, das Problem hat am Anfang jeder.

Eine kurze Einführung in die Begrifflichkeiten:

In der OOP geht es im Wesentlichen darum sog. Klassen zu erstellen und anzuwenden. Eine Klasse ist eine Art Bauplan, in dem die Eigenschaften (Variablen) und die Fertigkeiten (Methoden [Funktionen]) des zu erstellenden Objekts festgehalten sind.
Ein Objekt, auch als Instanz einer Klasse bezeichnet, bekommt alle im Bauplan (der Klasse) festgelegten Eigenschaften und Fertigkeiten eingebaut.
Wenn du also in der Klasse "Auto" (das klassische Beispiel) festlegst, das ein Auto eine Farbe, eine Radanzahl sowie die Fertigkeiten Beschleunigen und Bremsen besitzt, so werden später alle Objekte von Auto diese Dinge beherrschen. Somit ist der grosse Unterschied zwischen Instanz-x und x, dass das Instanz-x einem bestimmten Objekt zugeordnet ist und von diesem Objekt verarbeitet bzw benutzt wird.
Ein Konstruktor ist nichts anderes als eine spezielle Fertigkeit, die beim Konstruieren des Objekts, also wenn du es ganz neu anlegst, ausgeführt wird.

Das this ist ein Rückverweis - im Wesentlichen wird es benutzt, um Unklarheiten auszuräumen. Also damit dein Programm weiß, ob es eine lokale Variable oder eine Objektvariable benutzen soll.

mpG
Tobias
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben