Przejdź do treści głównej
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).
  • 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.