Polymorphismus

Neue Frage »

Auf diesen Beitrag antworten »
Tina92 Polymorphismus

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");
    }
}

 
Auf diesen Beitrag antworten »
eulerscheZahl

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.
Auf diesen Beitrag antworten »
Tina92

Super, vielen Dank, jetzt hab ich's endlich verstanden großes Grinsen
Auf diesen Beitrag antworten »
Tina92

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 :-)
 
Auf diesen Beitrag antworten »
eulerscheZahl

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.
Auf diesen Beitrag antworten »
Tina92

Vielen Dank für die Antwort :-)
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »