Moc i magia Polimorfizmu

Odpowiedz Nowy wątek
2019-06-12 23:44
0

Moi drodzy, witam.
Możecie opowiedzieć, co tutaj się dzieje .
**Pierwszy** zwykłe dziedziczenie.
**Drugie** Polimorfizm - wykorzystujemy takie metody, które są w MainClass i ChildClass, ale zrealizowane w ChildClass, tak?
**Trzecie** ??? Robimy z tego polimorfizmu zwykłe dziedziczenie? W takim razie musimy zawsze pisać (ChildClass), albo możemy to ominąć?

        ChildClass child = new ChildClass();
        child.method();

        MainClass instanceUp = child;
        instanceUp.method();

        ChildClass instanceDown = (ChildClass) instanceUp;
        instanceDown.method();

Pozostało 580 znaków

2019-06-13 00:59
2

**Pierwszy** jest to zwykłe nic specjalnego - wywołanie metody. -Nie ma żadnego dziedziczenia.
**Drugie** Polimorfizm - tak to jeden z rodzajów polimorfizmu dostępny w Javie (subtyping)
**Trzecie** to zwykłe wynaturzenie. Tzw rzutowanie w dół. Robi się to w ostateczności - głównie ze względu na jakies ograniczenia frameworków itp. Normalnie mów temu twarde i zdecydowane: raczej nie.

Polimorfizm - w ogólności to możliwość napisania jednego kawałka kodu tak aby operował na różnego rodzaju danych. Jest na to wiele rozwiązań technicznych:
https://en.wikipedia.org/wiki/Polymorphism_(computer_science)


Bardzo lubie Singletony, dlatego robię po kilka instancji każdego.
edytowany 2x, ostatnio: jarekr000000, 2019-06-13 01:00

Pozostało 580 znaków

2019-06-13 08:18
0

Dziedziczeniu też mówimy zdecydowanie raczej nie
Kompozycja i interfejsy ponad dziedziczenie :).
Np. jesli chcesz zliczać ile razy coś zostało dodane do Set, to zamiast dziedziczyć po HashSet i tam dodać zliczanie lepiej zrobić klasę CountingSet (mogłaby byc lepsza ale to nie jest istnotne) i zrobić coś takiego


public final CountSet<E> implement Set<E> {
 private int addCounter = 0; 
 private final Set<E> delegate;

public CountSet(Set<E> delegate) {
  this.delegate = delegate
}

@Override
   public boolean add(E element) {
     if (delegate.add(element) {
       counter++
   }
}

//reszta metod

Nie pomagam przez PM. Pytania zadaje się na forum.
edytowany 3x, ostatnio: scibi92, 2019-06-13 08:26

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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