[PHP|OOP] Klasy abstrakcyjne - wprowadzenie

W programowaniu obiektowym, klasy abstrakcyjne są niezwykle przydatne. Pozwalają one na tworzenie ogólnych szablonów, które mogą być dziedziczone przez inne klasy. W PHP, klasy abstrakcyjne są tworzone za pomocą słowa kluczowego abstract przed deklaracją klasy. Metody abstrakcyjne muszą być zaimplementowane przez każdą klasę dziedziczącą po klasie abstrakcyjnej. Pozwala to na narzucenie pewnych wymagań dotyczących implementacji dla klas dziedziczących.

Przykład

<?php

abstract class Student {
    protected $name;

    public function getName($name) {
        $this->name = $name;
    }

    abstract public function getAttend();
}

class Student1 extends Student {
    public function getAttend() {
        return 'Zgłaszam nieobecność';
    }
}

class Student2 extends Student {
    public function getAttend() {
        return 'Obecny';
    }
}

$student1 = new Dog();
$student1->getName('Marcin');
echo $student1->getAttend(); // Wyświetli: "Zgłaszam nieobecność"

$student2 = new Dog();
$student2->getName('Marcin');
echo $student2->getAttend(); // Wyświetli: "Obecny"

W powyższym przykładzie, mamy klasę abstrakcyjną Student, która zawiera metodę abstrakcyjną getAttend(). Metoda abstrakcyjna jest deklarowana bez implementacji, co oznacza, że każda klasa dziedzicząca po klasie Student musi ją zaimplementować.

Następnie tworzę nowe klasy - Student1 i Student2, które dziedziczą po klasie Student. Nowe klasy implementują metodę getAttend(), ale każda zwraca różne statusy - "Zgłaszam nieobecność" dla klasy Student1 i "Obecny" dla klasy Student2.

W głównym skrypcie tworzymy obiekty klasy Student1 i klasy Student2, pobieramy imię studenta za pomocą metody getName(), a następnie wywołujemy metodę getAttend(), aby otrzymać odpowiedni status obecności dla każdego studenta.

Po co używać klas abstrakcyjnych?

Klasy abstrakcyjne są przydatne, gdy chcemy stworzyć ogólną strukturę dla grupy klas, ale nie chcemy, aby sama klasa abstrakcyjna była instancjonowana. Zamiast tego, klasy dziedziczące po klasie abstrakcyjnej mogą dostosować i rozszerzać jej funkcjonalność.

Na przykład, jeśli chcemy stworzyć hierarchię zwierząt, możemy stworzyć klasę abstrakcyjną Student, która zawiera podstawowe cechy i metody wspólne dla wszystkich Studentów. Następnie, możemy stworzyć konkretne klasy dziedziczące po klasie Student, takie jak Student1 i Student2, które dostosowują się do danych o studencie. Oczywiście jest to tylko prosty przykład wykorzystania klas abstrakcyjnych.

Kilka słów na koniec

Klasy abstrakcyjne w PHP są używane do tworzenia ogólnych szablonów, które mogą być dziedziczone przez inne klasy. Pozwalają one na definiowanie metod abstrakcyjnych, które muszą być zaimplementowane przez klasy dziedziczące. Klasy abstrakcyjne są przydatne w przypadku, gdy chcemy tworzyć hierarchie klas, które mają pewne podobieństwa, ale różnią się w pewnych aspektach. Dzięki klasom abstrakcyjnym, możemy tworzyć bardziej elastyczny i modułowy kod.

Komentarze

Popular

[HTML] Jak wstawić obrazek?

[C++] Jak obliczyć pole i obwód trapezu?

[JavaScript|Node.js] Generowanie kodów QR w Node.js z użyciem biblioteki qrcode