INF.03Programowanie
Abstrakcja, Klasy abstrakcyjne i Interfejsy
Wzorce projektowe OOP służące do definiowania kontraktów i szablonów zachowań bez dostarczania pełnej implementacji.
Klasa abstrakcyjna vs Interfejs:
Klasa abstrakcyjna (
abstract class):- Nie można utworzyć jej bezpośredniej instancji (
new KlasaAbstrakcyjna()rzuci błąd). - Może zawierać zarówno metody z pełną implementacją, jak i metody abstrakcyjne bez ciała.
- Klasa potomna może dziedziczyć tylko po jednej klasie bazowej (
extends).
- Nie można utworzyć jej bezpośredniej instancji (
Interfejs (
interface):- Zawiera wyłącznie sygnatury metod bez jakiejkolwiek implementacji (same nagłówki).
- Wszystkie metody w interfejsie są domyślnie publiczne.
- Klasa może implementować wiele interfejsów jednocześnie (
implements InterfejsA, InterfejsB).
PHP
<?php
interface Renderowalny {
public function renderuj(): string;
}
abstract class Komponent implements Renderowalny {
protected string $id;
public function __construct(string $id) { $this->id = $id; }
}
class Przycisk extends Komponent {
public function renderuj(): string {
return "<button id='{$this->id}'>Kliknij</button>";
}
}Chcesz sprawdzić to pojęcie w praktyce?
Przeszukaj pytania z oficjalnych arkuszy CKE powiązane z hasłem Abstrakcja, Klasy abstrakcyjne i Interfejsy lub rozpocznij trening.