Konstruktor +methode????

Status
Nicht offen für weitere Antworten.

jusi

Mitglied
Hi,
ich komme irgendwie nicht weiter, vlt kann mir ja jemand weiter helfen.

Ich habe eine Klasse A mit Methoden.
Eine Klasse B die von A erbt.
B soll keine Methoden haben.
Mein Objekt in B soll soll die Methoden benutzen und gleichzeitig die darin enthaltenen Variablen neu initialisieren.

z.B
void gibLaut(String a){
System.out.println(a);
}
Das Objekt von B
soll nun die Methode verwenden und aus a z.B "bellen" machen


Hier mal meine Klasse
Java:
public class B extends A{
	String l;
	String f; 
	String s;
	String b;
	String a;
  public B() {
String a="Luft";
    atmen(a);
	lauteGeben(b);
	canWalk(canWalk,l);
	canFly(canFly,f);
	canSwim(canSwim,s);
		
			}
public B(String haarfarbe, String l, String f, String s,
		String b, String a, boolean weiblich, int groesse) {
	
	this.haarfarbe=haarfarbe;
	this.l=l;
	this.f=f;
	this.s=s;
	this.b=b;
	this.a=a;
	this.weiblich=weiblich;
	this.groesse=groesse;
	
	    atmen(a);
		lauteGeben(b);
		canWalk(canWalk,l);
		canFly(canFly,f);
		canSwim(canSwim,s);
}
public static void main(String[]args){
	B G=new B("braun", "langsam", "nein", "nein", "Hallo welt", "luft",true, 160);
		B g=new B();
	
		System.out.println(g);
	System.out.println(G);
	}

Die Ausgabe besteht entweder nur aus den Parametern im Konstruktor und die Methoden werden garnicht verwendet.
Das Objekt ohne Parameter verwendet die Methoden setzt aber alle auf null.
LG und danke schon mal!
 
Zuletzt bearbeitet:
Beim Initialisieren eines Objekts (dies passiert vor dem Konstruktoraufruf) werden Instanzvariablen, die ein Objekt referenzieren, auf null gesetzt. Anschließend wird der Konstruktor ausgeführt, der die Referenzen "umbiegen" kann, sprich die Instanzvariablen sinnvoll mit nicht-null-Werten initialisieren kann. Genau dies passiert in dienem no-arg-Konstruktor B() aber nicht. Also bleiben alle Instanzvariablen null.
 
Hm ,
Ja ich weiss da der Konstruktor keine Parameter hat, werden nur die Methoden ausgeführt und deren Werte auf null gesetzt ,aber warum führt der andre Konstruktor dann nur die Variablen aus und führt die Methoden gar nicht aus?
?
LG
Kannst dur mir vlt ein Beispiel geben, ich bin verwirrt!
 
Zuletzt bearbeitet:
Java:
 public B() {
    String a="Luft";
    atmen(a); // a != null, a == "Luft"
    lauteGeben(b); // b == null
    canWalk(canWalk,l); // l == null
    canFly(canFly,f); // f == null
    canSwim(canSwim,s); // s == null
}
 
Ja gut das weiss ich!DieVaribalen in den Methoden sind = null
und muss ich jetzt alles Variable so wie a =luft
im Konstruktor initialisieren ?
Oder wie
Wenn ich die Variablen in als Parameter aufnehme verändern die sich nicht in den Methoden!
 
Oh man so klappts !
Ich glaub es war gestern einfach zu spät.
So werden die Methoden und die "neunen"Variablen benutzt.
Java:
public B(String a, String b, boolean canWalk, String l, boolean canFly,String f,boolean canSwim,String s,String haarfarbe,boolean weiblich,int groesse) {
	
	this.haarfarbe=haarfarbe;
	this.l=l;
	this.f=f;
	this.s=s;
	this.b=b;
	this.a=a;
	this.weiblich=weiblich;
	this.groesse=groesse;
	this.canWalk=canWalk;
	this.canFly=canFly;
	this.canSwim=canSwim;
	
	    atmen(a);
		lauteGeben(b);
		canWalk(canWalk,l);
		canFly(canFly,f);
		canSwim(canSwim,s);
}
public static void main(String[]args){
	B G=new B();
		B g=new Greis("Luft", "Hallo Welt", true, "ganz langsam", false,"",true
				,"ich paddel ganz langsam und bin 3 km/h schnell","Braun",true,160);
Oder entdeckt noch jemand einen Fehler oder hat nen Verbesserungsvorschlag
LG
 
Hm ,
Ja ich weiss da der Konstruktor keine Parameter hat, werden nur die Methoden ausgeführt und deren Werte auf null gesetzt ,aber warum führt der andre Konstruktor dann nur die Variablen aus und führt die Methoden gar nicht aus?

Beide Konstruktoren führen die Methoden aus, nur in dem ersten Konstruktor mit null und in dem zweiten Konstruktor mit den Parametern, die du dem Konstruktor übergeben hast.

Aber ich verstehe ehrlich gesagt den Sinn des ersten Konstruktors nicht...
Wieso rufst du dort, ohne das die Variablen initialisiert werden, die Methoden auf?

Was funktionieren würde wäre:

Java:
B g = new B();

//und nun die Methoden-Aufrufe:
g.atmen("Luft");
g.lauteGeben("Hallo Welt");
g.canWalk(true, "langsam");

und deine Methoden in der Klasse A müssten so aussehen:

Java:
public void atmen(String a) {
this.a = a;
System.out.println(a);

Dann hättest du die Variable a mit dem Aufruf der Methode g.atmen("Luft"); mit dem Wert "Luft" initialisiert.
 
Zuletzt bearbeitet:
Ich habe gestern abend da so lange alles versucht und habe deswegen den Konstruktor leer gelassen in der Hoffnung das meine Fehlermeldung aufhören.
In dem leeren Konstruktor wurden meine Methoden aufgerufen und der Konstruktor mit den Parametern hat nur die Parameter abgearbeitet.(Ich weiss nicht warum aber die Methoden hat er einfach weg
gelassen)
Deswegen habe ich die beiden so geschrieben um auf den Fehler zu kommen den ich gemacht habe!


Mein Ziel war es das wenn das Objekt aufgerufen wird alle Methoden benutzt werden und mit neu initialisierten Variablen!
Aber jetzt klappts ja auch!
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben