PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Hilfe!!!!!



caaat
13-01-2007, 21:26
Hallo!

Ich hab ein Problem/Frage zum Thema Vererbung bzw. Interface:

im main programm erstelle ich zwei objekte:

Opposable o1 = new Monster(name1, klasse1, groesse1, gewicht1, leben1, treffer1);
Opposable o2 = new Monster(name2, klasse2, groesse2, gewicht2, leben2, treffer2);

die methode attack rufe ich auf und übergebe das objekt 2(o2) mit:
o1.attack(o2);

in der klasse monster steht folgender code:
public class Monster implements Opposable {

public Monster(...){
....
}
public int getLebenspunkte(){
return lebensp;
}

public void attack(Opposable o){
wmon1 = getLebenspunkte() - o2.getLebenspunkte;
}

}

o2.getLebenspunkte nimmt er mir nicht an. er schreibt immer, dass "cannot find symbol".

wie kann ich auf das zweite monster(o2) deren werte(name2, klasse2 etc.) zugreifen?

mein interface schaut so aus:
interface Opposable {
public void attack(Opposable o);
}

mach ich was falsch? fehlt irgendwas?? bitte um hilfe!!!!

VIELEN DANK!

Lg, Me

mehlvogel
13-01-2007, 21:34
1. Tipp: Bitte nutze für viel Quelltext doch bitte die [ code] Tags - das macht es sehr viel besser lesbar.



public void attack(Opposable o){
wmon1 = getLebenspunkte() - o2.getLebenspunkte;
}


In der Funktion heißt der Parameter nur "o", deswegen kannst du nicht "o2" benutzen, es ist schlichtweg nicht definiert.

caaat
14-01-2007, 11:23
bekomme trotzdem error:
cannot find symbol
symbol: method getLebenspunkte()
location: interface Opposable

anda_skoa
14-01-2007, 13:12
Die Methode getLebenspunkte() scheint nicht im Interface Opposable, sondern nur in der Klasse Monster deklariert zu sein.

In attack() hast du aber nur die Information, daß der Gegner vom Typ Opposable ist, daher keinen Zugriff auf die Methode von Monster.

Ciao,
_

caaat
14-01-2007, 13:14
jup, hab die getLebenspunkte() methode im interface eingefügt.. jetzt passt alles!
VIELEN DANK!!!!:)