Podajcie konkretny przykład polimorfizmu

0
  1. Cześć, zacząłem temat polimorfizma i nie do końca go jeszcze rozumiem. Możecie podać kilka realnych przykładów, gdzie jest używany polimorfizm(łatwych i nie bardzo)

  2. Metoda test.... Czyli kiedy do tej metody wysyłam Cat i Dog, to to będzie działało jak ```

Animal animal = new Cat();
i
Animal animal = new Dog();

Prawidłowo mówię?
Sorki za mój polski, w technicznych tematach to wciąż masakra

    public static void main(String[] args) {
        Animal animal = new Animal();
        Cat cat = new Cat();
        Dog dog = new Dog();
        
        test(animal);
        test(cat);
        test(dog);
        
    } 
    public static void test(Animal animal){
        animal.eat();
    }
1

Najrealniejszy jaki znam to InputStream. Wspólny interfejs do odczyta streamu bajtów. Dwie podstawowe implementacje to:

  • FileInputStream - czyta dane z pliku dysku
  • ByteArrayInputStream - czyta dane z tablicy bajtów.

Jesli twój program używa InputStream to w kodzie produkcyjnym dostarczasz implementację FileInputStream, żeby przeczytać plik, a w testach jednostkowych ByteArrayInputStream.

UPDATE

Kolejny przykład to kolekcje. W javie jest interfejs List, który ma dwie najczęściej używane implementacje LinkedList i ArrayList, które różnią się wydajnością. LinkedList jest lepsza jeśli dodaje się i usuwa często elementy, a ArrayList jeśli wyciąga się elementy po indeksie.

3

Masz klasy A, B i C. Wszystkie implementują własną metode toString() (Wszystkie klasy dziedziczą po klasie Object)

ArrayList<Object> lista = new ArrayList<>();

A x1= new A();  // x1.toString() zwraca a
B x2= new B();  // x2.toString() zwraca b
C x3= new C();  // x3.toString() zwraca c

lista.add(x1);
lista.add(x2);
lista.add(x3);

 // Na liście OBIEKTÓW w pentli wywołujesz te metody toString() jeżeli polimorfizm by nie istniał wtedy wykonała by się implementacja toString() z klasy Object
// Ale że my mamy polimorfizm z listy typu OBJECT wykonają się implementacje poszczególnych typów czyli klasy A, B i C 

lista.get(0).toString() //zwraca a
lista.get(1).toString() //zwraca b
lista.get(2).toString() //zwraca c

0

Ten facet fajnie to omawia, polecam. Kod jest bardzo prosty, wzorzec uzasadnia użycie tej techniki programowania:

1 użytkowników online, w tym zalogowanych: 0, gości: 1