Hva er overstyring i PHP?

Overriding er et objektorientert programmeringskonsept som ligner på et konsept som Class, Object, Encapsulation, Polymorphism, Overloading etc in PHP. Overskridelse av funksjoner og klasser gjøres når det opprettes en metode i den avledede klassen som er den samme som metoden i baseklassen eller foreldreklassen. Begge disse metodene har samme navn og samme antall argumenter.

Hvordan virker overstyring?

  • Overriding er et konsept der den avledede klassen til baseklassen utfører samme handling som den for en baseklasse. Denne overstyringen kan være på metoder eller klasser. Hvis det er metodeoverskridende, blir navnet på metoden parametrene, tilgangspesifikatoren funnet å være den samme som for foreldreklasse-metoden. Der det ikke er funnet noen endring i implementeringen av metoden i underklassen avledet fra baseklassen, sies det på det tidspunktet at metoden til underklassen har overstyrt metoden til baseklassen.
  • Anta at det er en klasse som heter Person som har sine egne dataegenskaper og metoder. Dette er foreldre eller baseklasse Person med en metode som kalles snakk (). Nå er det en klasse til som heter Ansatt som utvider Person-klassen. Nå har denne ansatte-klassen sine egne dataegenskaper og -metoder, og har også en metode som er den som for foreldreklassen, f.eks. Tale ().
  • Denne, speak () -metoden er til stede i baseklassen og også i den avledede klassen.
  • Det som nå skjer er når klassen blir instantivert eller når objektet opprettes, hvilken av tale () -metoden som skal utføres, noe som betyr at snakk om baseklassen eller snakk om den avledede klassen blir utført er avhengig av objektets klasse er kalt.
  • Med andre ord, hvis et objekt av Personklasse blir opprettet, kalles tale () -metoden til Personklassen og utføres derfor. Men hvis objektet til arbeidstakerklassen er opprettet, vil talk () -metoden til den avledede klassen bli utført, noe som overstyrer talk () -klassen til foreldreklassen.
  • Og her er hvordan overstyring foregår med et eksempel
  • I eksemplet nedenfor er det to klasser, baseklasse og avledet klasse. Den avledede klassen utvider baseklassen. Disse klassene blir satt i gang og to objekter $ obj1 og $ obj2 blir opprettet. $ obj1 er et objekt av BaseClass og $ obj2 er et objekt av en avledet klasse. Disse objektene kaller videre metodene deklarert i sine respektive klasser.
  • Her vil du observere at baseklassen og den avledede klassen har samme metode som kalles ABC (). Når du kjører dette programmet, vil du merke at ABC () -metoden har tilsidesatt baseklasse-metoden ABC ().

Eksempel på metodeoverskridelse

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();

Produksjon:

Overstyring med tilgangsmodifiserere

Det er tre tilgangsmodifiserere.

  1. offentlig: Tilgjengelig hvor som helst i programmet.
  2. privat: Kun tilgjengelig fra foreldreklassen.
  3. beskyttet: Tilgjengelig fra baseklassen og den avledede klassen.

Som vi vet, er den beskyttede metoden tilgjengelig fra en baseklasse og den avledede klassen, den kan offentliggjøres i underklassen, men ikke privat, da privat bare er tilgjengelig i foreldreklassen. Hvis en klassemetode har en tilgangsspesifikator som offentlig, kan ikke den overordnede metoden i den avledede klassen deklareres som privat og beskyttet

Eksempel på metodeoverskridelse ved bruk av tilgangsmodifiserere

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();

produksjon:

Overstyrer med det endelige nøkkelordet

Det endelige nøkkelordet brukes til klasser og metoder. Metoder og klasser, ikke variabler, kan overstyres.

Endelig metode overstyring

Når en metode eller en klasse er erklært som endelig, kan ikke overstyring av den metoden eller klassen utføres, og det er ikke mulig med arv med klassen.

Eksempel på metodeoverskridelse ved bruk av endelig nøkkelord

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();

Produksjon:

Overstyring av sluttklasse

En klasse som er erklært som endelig, kan ikke arves. En finaleklasse har videre endelig metode sammen med andre metoder. Men siden klassen i seg selv er erklært endelig, er det ingen nytte av å erklære en endelig metode i en sluttklasse.

Eksempel på klasseoverskridelse ved bruk av endelig nøkkelord

// 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();

Produksjon:

Anbefalte artikler

Dette er en guide til Overriding i PHP. Her diskuterer vi hva som er overordnet og fungerer av PHP og forskjellige metoder sammen med prøvekode. Du kan også se på følgende artikler for å lære mer -

  1. Core PHP-intervjuspørsmål
  2. Fordeler med PHP
  3. Karriere i PHP
  4. PHP-kommandoer
  5. Veiledning for å overstyre i JavaScript
  6. Hvordan overstyring fungerer i C ++?
  7. Overriding i OOPs | Behov for metodeoverskridelse
  8. Få tilgang til modifikatorer i PHP
  9. Overstyrer i Java