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

Informatiker Board » Themengebiete » Sonstige Fragen » Polymorphismus » 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 Polymorphismus
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Tina92
unregistriert
Polymorphismus Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Meine Frage:
Hallo zusammen,

ich habe einmal versucht, mit Polymorphismus zu arbeiten. Ob das richtig ist, da bin ich mir überhaupt nicht sicher und wollte hier mal nachfragen :-)

Vielen Dank ;-)

Meine Ideen:
Mein Code

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:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:

package Tier;

public class Main 
{
    public static void main(String[] args) 
    {
        Tier h = new Tier ("Felix");
        h = new Hund ("Cäsar");
        h = new Katze ("Peter");
    }
}

class Tier
{
    private String name; 
    public Tier (String name)
    {
        this.name = name; 
    }
}

class Hund extends Tier
{
    public Hund (String name)
    {
        super(name);
    }
    
    public void bellen ()
    {
        System.out.println("Wuff");
    }
}

class Katze extends Tier
{
    public Katze (String name)
    {
        super(name);
    }
    
    public void miau ()
    {
        System.out.println("Miau");
    }
}

04.07.2015 21:28
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

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

Da nutzst du nicht wirklich Polymorphie.

Hier mal eine Abwandlung:
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:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
public class Main {
	public static void main(String[] args) {
		Tier h = new Tier("Felix");
		System.out.println(h.gibLaut());
		h = new Hund("Cäsar");
		System.out.println(h.gibLaut());
		h = new Katze("Peter");
		System.out.println(h.gibLaut());
	}
}


class Tier {
	private String name;

	public Tier(String name) {
		this.name = name;
	}

	public String gibLaut() {
		return "laut";
	}
}


class Hund extends Tier {
	public Hund(String name) {
		super(name);
	}

	@Override
	public String gibLaut() {
		return "Wuff";
	}
}



class Katze extends Tier {
	public Katze(String name) {
		super(name);
	}

	@Override
	public String gibLaut() {
		return "Miau";
	}
}

Es wird jeweils die Funktion gibLaut aufgerufen, aber es kommen je nach Tier unterschiedliche Ergebnisse.

__________________
Syntax Highlighting fürs Board (Link)
04.07.2015 22:20 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Tina92
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

Super, vielen Dank, jetzt hab ich's endlich verstanden großes Grinsen
04.07.2015 22:26
Tina92
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

Zwei kurze Fragen hätte ich noch:

Wenn das System.out.println nicht in der main-Funktion stehen dürfte, wo schreibe ich dieses dann am Besten rein, sodass immer noch Polymorphismus gilt?



[CODE]

public static void main(String[] args) {
Tier h = new Tier("Felix");
System.out.println(h.gibLaut());
h = new Hund("Cäsar");
System.out.println(h.gibLaut());
h = new Katze("Peter");
System.out.println(h.gibLaut());

Und angenommen, die Klasse Tier wäre abstract, wie würde sich das dann auf den Code auswirken?

Vielen Dank :-)
10.07.2015 14:20
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

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 die Ausgabe beim Tier selbst machen:
code:
1:
2:
3:
4:
@Override
public void gibLaut() {
	System.out.println("Miau");
}


Wenn Tier abstract ist, funktioniert Tier h = new Tier("Felix"); nicht mehr. Hund und Katze kannst du danach immer noch erstellen.

__________________
Syntax Highlighting fürs Board (Link)
10.07.2015 15:36 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Tina92
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

Vielen Dank für die Antwort :-)
13.07.2015 15:16
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Sonstige Fragen » Polymorphismus