Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » polymorphie » Antwort erstellen » Hallo Gast [Anmelden|Registrieren]

Antwort erstellen
Benutzername: (du bist nicht eingeloggt!)
Thema:
Nachricht:

HTML ist nicht erlaubt
BBCode ist erlaubt
Smilies sind erlaubt
Bilder sind erlaubt

Smilies: 21 von 33
smileWinkDaumen hoch
verwirrtAugenzwinkerngeschockt
Mit ZungeGottunglücklich
Forum Kloppebösegroßes Grinsen
TanzentraurigProst
TeufelSpamWillkommen
LehrerLOL HammerZunge raus
Hilfe 
aktuellen Tag schließen
alle Tags schließen
fettgedruckter Textkursiver Textunterstrichener Text zentrierter Text Hyperlink einfügenE-Mail-Adresse einfügenBild einfügen Zitat einfügenListe erstellen CODE einfügenPHP CODE farbig hervorheben
Spamschutz:
Text aus Bild eingeben
Spamschutz

Die letzten 10 Beiträge
Matze84

oder, falls du die variable nicht statisch haben möchtest/kannst
dann musst du dir eine Instanz von Hund erstellen

code:
1:
2:
3:
4:
5:
6:
public static void main (String [] args){
   Hund hund = new Hund();
   hund.spieln();
}
Karlito

Indem man die Methode spieln() static macht. Also
code:
1:
2:
3:
4:
public static String spieln(){
  //...
}


Gruß,

Karlito
Batista

ich habe das programm für eine Übung verändert, allerdings beim ausführen
erscheint der Text
non-static method spieln() cannot be referenced from a static context

Wie behebt man diesen Fehler?
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:

public class Hund {

public Hund(){
}
public String bellen(){

return "WuFF";
}
public String spieln (){
System.out.println("Du");
}

public static void main (String [] args){

Hund.spieln();

}

}


Karlito

Es tritt eben keins auf, weil die Methode überladen ist. Wäre sie überschrieben, so könnte foxi nur mit Füchsen spielen und man müsste hybrid vorher wieder auf Fuchs casten.

Gruß,

Karlito
Blatt

Zitat:
Original von Karlito
OK, habe es verstanden... Die Methode spielen ist überladen und nicht überschrieben. Das ist mir jetzt ein wenig peinlich.


Das kann man leicht übersehen und wo genau wird ein Cast-Problem auftreten?
Karlito

OK, habe es verstanden... Die Methode spielen ist überladen und nicht überschrieben. Das ist mir jetzt ein wenig peinlich.

Edit: Danke für die Korrektur.

Gruß,

Karlito
Karlito

Du hast recht, die Ausgabe ist wie Du es sagst, aber ich verstehe es momentan noch nicht... (Habe mich außerdem an einer Stelle verlesen... Es sollte meines Verständnisses nach mindestens ein Cast-Problem geben...)

Asche auf mein Haupt.

Gruß,

Karlito
Blatt

Du kannst gerne das Programm erstellen und es wird dir Wuff Ringding aus werfen.
Wie kommst du auf "Ringding Wuff"?

spielen von Hund liefert

Wuff+h.bellen

h.bellen liefert Ringding zusammen ergibt es
Wuff Ringding
Karlito

Hallo Blatt (aka. Batista?),

das Objekt bleibt vom Typ Fuchs, auch wenn es einer Variablen vom Typ Hund zugewiesen wird. Das Verhalten ändert sich also nicht zu dem von Hund. Außerdem hast Du die Reihenfolge verbaselt. Es wird erst spielen und dann in spielen bellen aufgerufen. Somit wäre die Ausgabe wenn dann "Ringding Wuff".

Gruß,

Karlito
Blatt

Zitat:
Original von Karlito
Hallo Batista,

mit parsen hat das nichts zu tun. Wenn dann mit casten...

Die Lösung ist "RingDing RingDing".





Nein die Lösung ist Wuff Ringding, da foxi vom Typ Fuchs ist,hat es damit prinzipiell 2 Methode spielen zur auswahl!
Es hängt also vom übergebende Parameter ab, welche Methode ausgeführt wird, da die Main, hybird als Hund kennt, wird eben die Methode spielen vom Hund ausgeführt
Es sind weitere Beiträge zu diesem Thema vorhanden. Klicken Sie hier, um sich alle Beiträge anzusehen.