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
abstracti 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.