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

Informatiker Board » Themengebiete » Praktische Informatik » polymorphie » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen polymorphie
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Batista
unregistriert
polymorphie Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

directupload.net/file/d/3951/qqpyb43g_png.htm

In der Zeile 14 würde ich sagen, Fehler "Cannot parse Hund to Fuchs"
08.04.2015 17:34
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo Batista,

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

Die Lösung ist "RingDing RingDing".

Grund:
foxi ist klar vom Typ Fuchs.
Das Objekt, welches der Variable hybrid zugewiesen ist, ist aber auch vom Typ Fuchs.

Dazu muss man verstehen, dass wenn eine Klasse von einer Anderen erbt, der geerbte Typ erweitert und gleichzeitig behalten wird. D.h. jeder Fuchs ist ein Hund.

Wenn ich nun ein Objekt vom Typ Fuchs erzeuge, kann ich dieses einer Variablen vom Typ Hund zuweisen, weil ein Fuchs ein Hund ist. Es ändert sich dadurch nur die Sichtweise auf das Objekt.

Weist man ein Objekt einer Variablen vom Typ der Oberklasse zu, so schränkt sich die Sicht auf das Objekt auf die Eigenschaften und das Verhalten der Oberklasse ein.

Beispiel:
Jeder Student ist ein Mensch. Es kommt jedoch zusätzlich zu den Eigenschaften eines Menschen z.B. noch eine Matrikelnummer hinzu. Weise ich ein Objekt vom Typ Student einer Variablen vom Typ Student zu, kann ich auf die Matrikelnummer zugreifen. Weise ich jedoch das Objekt einer Variablen vom Typ Mensch zu, verliere ich den Zugriff auf die Matrikelnummer.
Eine Zuweisung eines Objektes vom Typ Mensch auf eine Variable vom Typ Student schlägt fehl, da nicht jeder Mensch ein Student ist.

Gruß,

Karlito
08.04.2015 18:58 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
Blatt
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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
08.04.2015 19:07
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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
08.04.2015 19:23 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
Blatt
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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
08.04.2015 19:35
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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
08.04.2015 19:44 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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
08.04.2015 19:47 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
Blatt
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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?
08.04.2015 20:04
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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
08.04.2015 20:08 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
Batista
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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();

}

}


09.04.2015 12:01
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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


Gruß,

Karlito
09.04.2015 15:11 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
Matze84
Eroberer


Dabei seit: 14.10.2012
Beiträge: 73

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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();
}
10.04.2015 18:17 Matze84 ist offline Beiträge von Matze84 suchen Nehmen Sie Matze84 in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » polymorphie