klasy abstrakcyjnej
klasa abstrakcyjna jest klasą deklarowaną jako abstrakcyjna — może zawierać metody abstrakcyjne, ale nie musi. Klasy abstrakcyjne nie mogą być tworzone jako instancje, ale mogą być podklasowane. Klasa abstrakcyjna może mieć statyczne pola i statyczne metody. Gdy klasa abstrakcyjna jest podklasowana, podklasa zazwyczaj dostarcza implementacji dla wszystkich metod abstrakcyjnych w swojej klasie nadrzędnej. Jeśli jednak nie, to podklasa musi być również zadeklarowana jako abstrakcyjna.,
metoda abstrakcyjna jest metodą, która jest zadeklarowana bez implementacji (bez nawiasów klamrowych i po której następuje średnik), jak poniżej:
abstract void sum(int a, int b);
rozważ użycie klas abstrakcyjnych, jeśli którakolwiek z tych instrukcji ma zastosowanie do twojej sytuacji:
- chcesz współdzielić Kod między kilkoma blisko spokrewnionymi klasami.
- spodziewasz się, że klasy rozszerzające Twoją klasę abstrakcyjną mają wiele popularnych metod lub pól lub wymagają modyfikatorów dostępu innych niż publiczne(np. protected I private).
- chcesz zadeklarować niestatyczne lub niekończące się pola., Umożliwia to definiowanie metod, które mogą uzyskiwać dostęp i modyfikować stan obiektu, do którego należą.
interfejs
interfejs jest tylko deklaracją metod obiektu, nie jest implementacją. W interfejsie definiujemy, jakiego rodzaju operację może wykonać obiekt. Operacje te są definiowane przez klasy implementujące interfejs. Interfejsy tworzą umowę między klasą A światem zewnętrznym, a umowa ta jest egzekwowana w czasie kompilacji przez kompilator.,
rozważ użycie interfejsów, jeśli którakolwiek z tych instrukcji ma zastosowanie do twojej sytuacji:
- spodziewasz się, że niepowiązane klasy zaimplementują Twój interfejs. Na przykład interfejsy porównywalne i Klonowalne są implementowane przez wiele niepowiązanych klas.
- chcesz określić zachowanie określonego typu danych, ale nie przejmujesz się tym, kto implementuje jego zachowanie.
- chcesz skorzystać z wielu dziedziczeń.,
pierwotnie opublikowany czerwiec 2016
Czytaj dalej
- kiedy (nie) używać klas abstrakcyjnych Java
- Java: Interface Vs. Abstract Class
- Jak wybrać pomiędzy klasami abstrakcyjnymi a interfejsem w Javie
Dodaj komentarz