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:

  1. chcesz współdzielić Kod między kilkoma blisko spokrewnionymi klasami.
  2. 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).
  3. 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:

  1. 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.
  2. chcesz określić zachowanie określonego typu danych, ale nie przejmujesz się tym, kto implementuje jego zachowanie.
  3. 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