Sobes.tech
Junior

Czym jest klasa abstrakcyjna?

sobes.tech AI

Odpowiedź od AI

Klasa abstrakcyjna to klasa, której nie można bezpośrednio zainstancjonować, czyli nie można utworzyć jej obiektu za pomocą new. Jest przeznaczona do użycia jako klasa bazowa dla innych klas (podklas).

Główne cechy klasy abstrakcyjnej:

  • Deklaruje się ją słowem kluczowym abstract.
  • Może zawierać zarówno metody abstrakcyjne, jak i zwykłe (konkretne).
  • Metody abstrakcyjne są deklarowane słowem kluczowym abstract i nie mają ciała (implementacji). Muszą być zaimplementowane w nieabstrakcyjnych klasach potomnych.
  • Może zawierać stałe wartości i właściwości.
<?php

abstract class AbstractClass
{
    // Metoda abstrakcyjna - musi być zaimplementowana w klasie potomnej
    abstract protected function abstractMethod();

    // Metoda zwykła
    public function concreteMethod()
    {
        echo "To jest konkretna metoda\n";
    }
}

class ConcreteClass extends AbstractClass
{
    // Implementacja metody abstrakcyjnej
    protected function abstractMethod()
    {
        echo "To jest implementacja metody abstrakcyjnej\n";
    }
}

// Nie można utworzyć instancji klasy abstrakcyjnej
// $obj = new AbstractClass(); // Błąd

// Można utworzyć instancję klasy konkretnej
$obj = new ConcreteClass();
$obj->abstractMethod();
$obj->concreteMethod();

Klasy abstrakcyjne służą do definiowania wspólnego interfejsu i funkcjonalności dla grupy powiązanych klas, pozostawiając szczegóły implementacji klasom potomnym. Z punktu widzenia użytkownika kodu, można pracować z obiektami klas potomnych, używając typu klasy bazowej abstrakcyjnej, co zapewnia polimorfizm.