Hvad er overstyring i PHP?

Overriding er et objektorienteret programmeringskoncept, der ligner et koncept som klasse, objekt, indkapsling, polymorfisme, overbelastning osv. I PHP. Overskridelse af funktioner og klasser udføres, når der oprettes en metode i den afledte klasse, som er den samme som metoden i baseklassen eller overordnet klasse. Begge disse metoder har samme navn og samme antal argumenter.

Hvordan fungerer tilsidesættelse?

  • Overriding er et koncept, hvor den afledte klasse af baseklassen udfører den samme handling som for en baseklasse. Denne tilsidesættelse kan være på metoder eller klasser. Hvis det er metodeoverskridende, er navnet på metodens parametre, adgangspecifikationen fundet at være den samme som for den overordnede klassemetode. Hvor der ikke er fundet nogen ændring i implementeringen af ​​metoden i underklassen afledt fra baseklassen, siges det på det tidspunkt, at metoderne i underklassen har tilsidesat metoden i baseklassen.
  • Antag, at der er en klasse kaldet Person, der har sine egne dataegenskaber og metoder. Dette er forælderen eller baseklassen Person med en metode kaldet tale (). Nu er der endnu en klasse kaldet Medarbejder, der udvider Personklassen. Nu har denne medarbejderklasse sine egne dataegenskaber og -metoder og har også en metode, der er den samme som for moderklassen f.eks. Tale ().
  • Denne, speak () -metode er til stede i baseklassen og også i den afledte klasse.
  • Hvad der nu sker, er, når klassen er instantiseret, eller når objektet oprettes, hvilken af ​​tale () -metoden, der vil blive udført, hvilket betyder, at tale om baseklassen eller tale om den afledte klasse, der udføres, afhænger af klassens objekt Hedder.
  • Med andre ord, hvis der oprettes et objekt i Personklassen, kaldes tale () -metoden til Personklassen og udføres derfor. Men hvis objektet for medarbejderklassen oprettes, udføres tale () -metoden for den afledte klasse, hvilket tilsidesætter tale () -klassen i forældreklassen.
  • Og her er, hvordan altoverskridende finder sted med et eksempel
  • I nedenstående eksempel er der to klasser, baseklasse og afledt klasse. Den afledte klasse udvider basisklassen. Disse klasser startes, og to objekter $ obj1 og $ obj2 oprettes. $ obj1 er et objekt for BaseClass og $ obj2 er et objekt i en afledt klasse. Disse objekter kalder endvidere de metoder, der er erklæret i deres respektive klasser.
  • Her vil du observere, at baseklassen og den afledte klasse har den samme metode, der kaldes ABC (). Når du udfører dette program, vil du bemærke, at ABC () -metoden har tilsidesat 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();

Produktion:

Overskridelse med adgangsmodifikatorer

Der er tre adgangsmodifikatorer.

  1. offentligt: Tilgængeligt overalt i programmet.
  2. privat: Kun tilgængelig fra forældreklassen.
  3. beskyttet: Tilgængelig fra baseklassen og den afledte klasse.

Som vi ved, er den beskyttede metode tilgængelig fra en baseklasse og den afledte klasse, den kan offentliggøres i underklassen, men ikke privat, da privat kun er tilgængelig i forældreklassen. Hvis en klassemetode har en adgangsspecifikation som offentlig, kan den overordnede metode i den afledte klasse ikke erklæres som privat og beskyttet

Eksempel på metodeoverskridelse ved hjælp af Access Modifiers

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

produktion:

Overskridelse med det endelige nøgleord

Det endelige nøgleord bruges til klasser og metoder. Metoder og klasser, ikke variabler, kan tilsidesættes.

Endelig metodeoverskridelse

Når en metode eller en klasse er erklæret som endelig, kan tilsidesættelse af denne metode eller klasse ikke udføres, også er arv med klassen ikke mulig.

Eksempel på metodeoverskridelse ved hjælp af det endelige nøgleord

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

Produktion:

Endelig overstyring af klassen

En klasse, der erklæres som endelig, kan ikke arves. En finaleklasse har endelig en endelig metode sammen med andre metoder. Men da klassen i sig selv er erklæret endelig, er det ikke nyttigt at erklære en endelig metode i en endelig klasse.

Eksempel på klasseoverskridelse ved hjælp af det endelige nøgleord

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

Produktion:

Anbefalede artikler

Dette er en guide til tilsidesættelse i PHP. Her diskuterer vi, hvad der er alt for meget og fungerer af PHP og forskellige metoder sammen med prøvekode. Du kan også se på de følgende artikler for at lære mere -

  1. Core PHP-interviewspørgsmål
  2. Fordele ved PHP
  3. Karriere i PHP
  4. PHP-kommandoer
  5. Vejledning til tilsidesættelse i JavaScript
  6. Hvordan fungerer overstyring i C ++?
  7. Tilsidesættelse i OOP'er | Behov for metodeoverskridelse
  8. Få adgang til modifikatorer i PHP
  9. Overstyring i Java

Kategori: