Polimorfizm

Polimorfizm (kolejny fundamentalny element OOP) to możliwość przypisania typu bardziej precyzyjnego do typu nadrzędnego.
Jest to przydatne gdy np. chcemy w kolekcji przechowywać różnego rodzaju obiekty posiadające wspólną nadklasę co może ułatwić np. iterację po nich.
Warto zwrócić uwagę że mimo zadeklarowania zmiennych typem bardziej ogólnym (z nadklasy) to w przypadku metod wywoływane są implementacje z naszych podklas a nie klasy nadrzędnej.

class Zwierze {
public String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Zwierze(String name) {
        setName(name);
    }

    void wydajDzwiek() {
        System.out.println("Jestem zwierzęciem i nazywam się " + getName());
    }
}

class Kot extends Zwierze {
    public Kot(String name) {
        super(name);
    }

    @Override
    public void wydajDzwiek() {
        System.out.println("Jestem kotem i nazywam się " + getName());
    }
}

class Pies extends Zwierze {
    public Pies(String name) {
        super(name);
    }

    @Override
    public void wydajDzwiek() {
        System.out.println("Jestem psem i nazywam się " + getName());
    }
}

public class Zoo {
    public static void main(String[] args) {
        Zwierze pies = new Pies("Azor");
        Zwierze kot = new Kot("Rumcajs");
        Zwierze kotopies = new Zwierze("Kotopies");

        pies.wydajDzwiek();
        kot.wydajDzwiek();
        kotopies.wydajDzwiek();
    }
}

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *