Przesłanianie w PHP - Różne metody PHP wraz z przykładami

Spisie treści:

Anonim

Co to jest nadpisywanie w PHP?

Przesłanianie to koncepcja programowania obiektowego, która jest podobna do pojęcia takiego jak klasa, obiekt, enkapsulacja, polimorfizm, przeciążanie itp. W PHP. Przesłanianie funkcji i klas odbywa się, gdy tworzona jest metoda w klasie pochodnej, która jest taka sama jak metoda w klasie bazowej lub klasie nadrzędnej. Obie metody mają tę samą nazwę i tę samą liczbę argumentów.

Jak działa przesłonięcie?

  • Przesłanianie to koncepcja, w której klasa pochodna klasy podstawowej wykonuje to samo działanie, co klasa podstawowa. To przesłonięcie może dotyczyć metod lub klas. Jeśli metoda zastępuje metodę, to nazwa metody określa parametry, specyfikator dostępu jest taki sam, jak metoda klasy nadrzędnej. Jeśli nie znaleziono żadnych zmian w implementacji metody w podklasie pochodzącej z klasy podstawowej, wówczas mówi się, że metoda podklasy zastąpiła metodę klasy podstawowej.
  • Załóżmy, że istnieje klasa o nazwie Osoba, która ma własne właściwości danych i metody. Jest to osoba nadrzędna lub osoba klasy podstawowej z metodą o nazwie speak (). Teraz jest jeszcze jedna klasa o nazwie Pracownik, która rozszerza klasę Osoba. Teraz ta klasa pracownika ma własne właściwości danych i metody, a także ma taką samą metodę jak klasa nadrzędna, np. Speak ().
  • Ta metoda mówi () jest obecna w klasie bazowej, a także w klasie pochodnej.
  • Teraz dzieje się tak, gdy instancja klasy lub obiekt jest tworzony, która z metod speak () zostanie wykonana, co oznacza, że ​​wykonanie klasy bazowej lub klasa pochodna jest wykonywane, zależy od obiektu klasy jest nazywany.
  • Innymi słowy, jeśli zostanie utworzony obiekt klasy Person, wówczas wywołana zostanie metoda speak () klasy Person i dlatego zostanie wykonana. Jeśli jednak zostanie utworzony obiekt klasy Employee, zostanie wykonana metoda speak () klasy pochodnej, która przesłania klasę speak () klasy nadrzędnej.
  • A oto jak nadpisywanie odbywa się na przykładzie
  • W poniższym przykładzie są dwie klasy, klasa bazowa i klasa pochodna. Klasa pochodna rozszerza klasę podstawową. Klasy te są inicjowane i tworzone są dwa obiekty $ obj1 i $ obj2. $ obj1 to obiekt BaseClass, a $ obj2 to obiekt klasy pochodnej. Obiekty te wywołują metody zadeklarowane w swoich klasach.
  • Tutaj zobaczysz, że klasa bazowa i klasa pochodna mają tę samą metodę o nazwie ABC (). Po uruchomieniu tego programu zauważysz, że metoda ABC () zastąpiła metodę klasy bazowej ABC ().

Przykład zastąpienia metody

class BaseClass (
public function ABC() (
echo "
In the base class";
)
)
class DerivedClass extends BaseClass (
// override the method ABC() of base class
public function ABC() (
echo "
In the derived class";
)
)
$obj1 = new BaseClass;
$obj1->ABC();
$obj2 = new DerivedClass;
$obj2->ABC();

Wynik:

Przesłanianie za pomocą modyfikatorów dostępu

Istnieją trzy modyfikatory dostępu.

  1. public: dostępny z dowolnego miejsca w programie.
  2. prywatny: Dostępny tylko z klasy nadrzędnej.
  3. chroniony: dostępny z klasy podstawowej i pochodnej.

Jak wiemy, chroniona metoda jest dostępna z klasy podstawowej, a klasa pochodna może być upubliczniona w podklasie, ale nie prywatna, ponieważ prywatna jest dostępna tylko w klasie nadrzędnej. Również jeśli metoda klasy ma specyfikator dostępu jako publiczny, wówczas metoda zastępująca w klasie pochodnej nie może być zadeklarowana jako prywatna i chroniona

Przykład zastąpienia metody za pomocą modyfikatorów dostępu

class BaseClass (
private function ABC() (
echo "
In the base class Method : ABC";
)
protected function XYZ() (
echo "
In the base class Method : XYZ";
)
)
class DerivedClass extends BaseClass (
// overriding with public for wider accessibility
public function ABC() (
echo "
In the derived class Method : ABC";
)
// overriding method
// with more accessibility
public function XYZ() (
echo "
In the derived class Method : XYZ";
)
)
//$obj1 = new BaseClass;
//$obj1->ABC(); //throws fatal error
//$obj1->XYZ(); //throws fatal error
$obj2 = new DerivedClass;
$obj2->ABC();
$obj2->XYZ();

wynik:

Przesłanianie za pomocą końcowego słowa kluczowego

Ostatnie słowo kluczowe jest używane w przypadku klas i metod. Metody i klasy, a nie zmienne, można zastąpić.

Ostateczne zastąpienie metody

Gdy metoda lub klasa zostanie zadeklarowana jako ostateczna, wówczas nie można wykonać zastąpienia tej metody lub klasy, również dziedziczenie z klasą nie jest możliwe.

Przykład zastąpienia metody za pomocą końcowego słowa kluczowego

class BaseClass (
// Final method – display
// this cannot be overridden in base class
final function display() (
echo "
In the Base class display function";
)
/// method - ABC
function ABC() (
echo "
In the Base cLass ABC function";
)
)
class DerivedClass extends BaseClass (
function ABC() (
echo "
In the Derived class ABC function";
)
)
$obj1 = new DerivedClass;
$obj1->display();
$obj1->ABC();

Wynik:

Przesłonięcie klasy ostatecznej

Klasa zadeklarowana jako ostateczna nie może być dziedziczona. Klasa końcowa ma ponadto metodę końcową wraz z innymi metodami. Ale ponieważ sama klasa jest uznana za ostateczną, nie ma potrzeby deklarowania ostatecznej metody w klasie ostatecznej.

Przykład przesłaniania klas za pomocą końcowego słowa kluczowego

// class declared as final cannot be overridden
final class BaseClass (
// method - ABC
function ABC() (
echo "
In the BaseClass Method ABC function";
)
// Final method - display
function display() (
echo "
In the BaseClass Method display function";
)
)
// here you cannot extend the base class
// as the base class is declared as final
$obj1 = new BaseClass;
$obj1->display();
$obj1->ABC();

Wynik:

Polecane artykuły

Jest to przewodnik po zastępowaniu w PHP. Tutaj omawiamy, co jest nadpisujące i działa PHP oraz różne metody wraz z przykładowym kodem. Możesz także przejrzeć następujące artykuły, aby dowiedzieć się więcej -

  1. Podstawowe pytania do wywiadu PHP
  2. Zalety PHP
  3. Kariera w PHP
  4. Polecenia PHP
  5. Przewodnik po zastępowaniu w JavaScript
  6. Jak działa nadpisywanie w C ++?
  7. Przesłanianie w OOP | Potrzeba zastąpienia metody
  8. Dostęp do modyfikatorów w PHP
  9. Przesłanianie w Javie