Skip to content
Skip to content
Menu
Info Cafe
Info Cafe

Polimorfizm wyjaśniony w prosty sposób!

By admin on 28 marca, 2021

OOP | Dla początkujących | Dynamiczny vs. Statyczny

Cztery podstawowe pojęcia OOP (Object Oriented Programming) to Dziedziczenie, Abstrakcja, Polimorfizm i Enkapsulacja. Dla kogoś, kto jest nowy w OOP, może być trochę trudno na początku uchwycić ostatnie 3 z podstawowych pojęć OOP (ponieważ dziedziczenie jest trochę łatwiejsze do zrozumienia).

Polimorfizm jest zdolnością obiektu do przyjmowania wielu form.

Każdy obiekt Java, który może przejść więcej niż jeden test IS-A jest uważany za polimorficzny- tutorialspoint. Oznacza to, że każdy obiekt klasy dziecięcej może przyjąć dowolną formę klasy w swojej hierarchii nadrzędnej i oczywiście siebie również. Co to właściwie znaczy, że obiekt klasy dziecięcej może być przypisany do dowolnego odniesienia do klasy w swojej hierarchii nadrzędnej i oczywiście siebie również.

Eg: Powiedzmy, że klasa Student jest dzieckiem klasy Person

Student student = new Student()
Person person = new Student()

Najczęstsze użycie polimorfizmu w OOP występuje, gdy odniesienie do klasy nadrzędnej jest używane do odniesienia do obiektu klasy dziecięcej. Właściwie mówi się tutaj o polimorfizmie dynamicznym (który opiszę w następnej kolejności).

Istnieją 2 rodzaje polimorfizmu, które są powszechnie wymieniane.

  1. Polimorfizm dynamiczny
  2. Polimorfizm statyczny

Polimorfizm dynamiczny

Jest on również wymieniany jako polimorfizm w czasie rzeczywistym, wiązanie dynamiczne, wiązanie w czasie rzeczywistym, wiązanie późne i nadpisywanie metod. Tutaj posiadanie wielu form ma miejsce w różnych klasach.

To jest to, co jest powszechnie znane jako tak zwany „polimorfizm”. Pozwól, że wyjaśnię to BARDZO PROSTO –

Załóżmy, że istnieją metody o tej samej sygnaturze w klasach w hierarchii klas (relacje rodzic-dziecko), te metody są w różnych formach (jest to znane jako nadpisywanie metod).

Gdy obiekt jest przypisany do referencji klasy i gdy wywoływana jest metoda obiektu, wykonywana jest metoda w klasie obiektu. Nie metoda klasy referencyjnej (jeśli referencja jest klasą nadrzędną).

Co się tutaj dzieje, ponieważ tworzenie obiektu odbywa się w czasie wykonywania, forma metody, która powinna być wykonana (metoda w obiekcie) może być określona tylko w czasie wykonywania.

Eg: Kod Java

class Person { 
public void teach(){
System.out.println("Person can teach");
}
}
class Teacher extends Person {
public void teach() {
System.out.println("Teacher can teach in a school");
}
}
public class TestTeacher {
public static void main(String args) {
Person person = new Person(); //Person reference and object
Person another_person = new Teacher(); //Person reference, Teacher object
Teacher teacher = new Teacher(); //Teacher reference and obj. person.teach();//output: Person can teach // Here you can see Teacher object's method is executed even-
// -though the Person reference was used
another_person.teach();//output: Teacher can teach in a school teacher.teach();//output: Teacher can teach in a school
}
}

Polimorfizm statyczny

Wymieniany jest również jako Compile-Time polymorphism, Statyczne wiązanie, Wiązanie w czasie kompilacji, Wczesne wiązanie i Przeciążanie metod. Tutaj posiadanie wielu form ma miejsce w tej samej klasie.

Jeśli wyjaśnię to PROSTO..

To jest właściwie przeciążanie metod. Przeciążanie metod to posiadanie więcej niż jednej metody o tej samej nazwie, ale z różnymi argumentami (typ powrotu może być taki sam lub nie). Tutaj podczas wywoływania metod kompilator wybiera, którą metodę wywołać w zależności od parametrów przekazanych podczas wywoływania. Dzieje się to w czasie kompilacji.

Eg: Kod Java

class Calculator {
void add(int a, int b) {
System.out.println(a+b);
}
void add(int a, int b, int c) {
System.out.println(a+b+c);
}
}public class Demo {
public static void main(String args) {
Calculator calculator = new Calculator(); // method with 2 parameters is called
calculator.add(10, 20); //output: 30 // method with 3 parameters is called
calculator.add(10, 20, 30); //output: 60
}
}

Niektórzy ludzie mówią, że przeciążanie metod nie jest prawdziwie polimorfizmem. Ale myślę, że można to sklasyfikować jako rodzaj polimorfizmu, ponieważ w przeciążaniu metod istnieje metoda w wielu formach.

Mam nadzieję, że to pomogło w zrozumieniu polimorfizmu po prostu.

Cheeers! 😀

Tutaj jest kilka przydatnych linków

        Tutaj jest kilka przydatnych linków linki

        • Nadpisywanie metod
        • Przeciążanie metod
        • Typy polimorfizmu
        • Różnica między polimorfizmem w czasie wykonywania a polimorfizmem w czasie kompilacji

Zobacz wpisy

Co to jest Lyme literate doctor?
Wojna Rewolucyjna

Dodaj komentarz Anuluj pisanie odpowiedzi

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

Najnowsze wpisy

  • Firebush (Polski)
  • Prognoza stawek CD na 2021 rok: Stopy procentowe prawdopodobnie pozostaną na niskim poziomie, ale mogą wzrosnąć w dalszej części roku
  • Jak ustrukturyzować dokumentację systemu zarządzania jakością
  • Zdrowe Gry i Zajęcia dla Dzieci | UIC Online Informatics
  • Wheat Ales (American) (Polski)
  • Korzyści z karmienia piersią po roku
  • Czy bezpiecznie jest wrzucać fusy z kawy do zlewu | Atomic Plumbing
  • Cool-Down After Your Workout (Polski)
  • Nasza praca
  • Najlepsza ręczna maszyna do szycia do kupienia: 2020

Meta

  • Zaloguj się
  • Kanał wpisów
  • Kanał komentarzy
  • WordPress.org

Archiwa

  • Marzec 2021
  • Luty 2021
  • Styczeń 2021
  • Grudzień 2020
  • DeutschDeutsch
  • NederlandsNederlands
  • EspañolEspañol
  • FrançaisFrançais
  • PortuguêsPortuguês
  • ItalianoItaliano
  • PolskiPolski
  • 日本語日本語
©2021 Info Cafe | WordPress Theme by SuperbThemes.com