Vad överstyrs i PHP?

Overriding är ett objektorienterat programmeringskoncept som liknar ett koncept som klass, objekt, kapsling, polymorfism, överbelastning etc i PHP. Överskridande av funktioner och klasser görs när en metod i den härledda klassen skapas som är densamma som metoden i basklassen eller förälderklassen. Båda dessa metoder har samma namn och samma antal argument.

Hur fungerar åsidosättande?

  • Överskridande är ett koncept där den härledda klassen i basklassen utför samma åtgärd som för en basklass. Denna åsidosättning kan vara på metoder eller klasser. Om det är metodöverskridande kommer namnet på metodens parametrar att visas, åtkomstspecifikationen befinner sig vara densamma som för moderklassmetoden. Där det inte finns någon förändring i implementeringen av metoden i underklassen härledd från basklassen sägs vid den tiden att metod för underklassen har åsidosatt metod för basklassen.
  • Anta att det finns en klass som heter Person som har sina egna dataegenskaper och metoder. Detta är förälder- eller basklassen Person med en metod som kallas tala (). Nu finns det ytterligare en klass som kallas anställd som förlänger personklassen. Nu har den här anställdsklassen sina egna dataegenskaper och metoder och har också en metod som är samma som för moderklassen, t.ex..speak ().
  • Metoden talar () finns i basklassen och även i den härledda klassen.
  • Vad som nu händer är när klassen är instanserad eller när objektet skapas, vilken av metoden speak () kommer att köras, vilket betyder att tal om basklassen eller tal om den härledda klassen exekveras beror på objektets klass kallas.
  • Med andra ord, om ett objekt i Person-klassen skapas kallas talet () -metoden för Person-klassen och körs därför. Men om objektet för medarbetarklassen skapas, kommer talet () -metoden för den härledda klassen att köras, vilket åsidosätter talet () -klassen för förälderklassen.
  • Och här är hur övervägande sker med ett exempel
  • I exemplet nedan finns det två klasser, basklass och härledd klass. Den härledda klassen utvidgar basklassen. Dessa klasser startas och två objekt $ obj1 och $ obj2 skapas. $ obj1 är ett objekt för BaseClass och $ obj2 är ett objekt i en härledd klass. Dessa objekt kallar vidare de metoder som deklarerats i deras respektive klasser.
  • Här kommer du att observera att basklassen och den härledda klassen har samma metod som kallas ABC (). När du kör detta program kommer du att märka att metoden ABC () har åsidosatt basklassmetoden ABC ().

Exempel på åsidosättande av metod

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:

Överskridande med åtkomstmodifierare

Det finns tre åtkomstmodifierare.

  1. offentligt: tillgängligt var som helst i programmet.
  2. privat: endast tillgängligt från förälderklassen.
  3. skyddad: Tillgänglig från basklassen och den härledda klassen.

Som vi vet är den skyddade metoden tillgänglig från en basklass och den härledda klassen kan den offentliggöras i underklassen men inte privat eftersom privat endast är tillgänglig i förälderklassen. Om en klassmetod har en åtkomstspecifikation som offentlig kan den övervägande metoden i den härledda klassen inte förklaras som privat och skyddad

Exempel på åsidosättande av metoder med hjälp av åtkomstmodifierare

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:

Överträffar med det slutliga sökordet

Det sista nyckelordet används för klasser och metoder. Metoder och klasser, inte variabler kan åsidosättas.

Slutlig metodöverskridande

När en metod eller en klass förklaras som slutgiltig, kan inte åsidosättande av den metoden eller klassen utföras, är inte arv med klassen möjlig.

Exempel på metoderöverskridande med slutligt nyckelord

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:

Överstyrning av finalklass

En klass som förklaras som slutgiltig kan inte ärvas. En finalklass har dessutom den sista metoden tillsammans med andra metoder. Men eftersom klassen själva förklaras som slutgiltig är det inte nyttigt att förklara en slutlig metod i en slutklass.

Exempel på klassöverskridande med slutligt nyckelord

// 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:

Rekommenderade artiklar

Detta är en guide till Överridning i PHP. Här diskuterar vi vad som är överskridande och fungerar för PHP och olika metoder tillsammans med provkod. Du kan också titta på följande artiklar för att lära dig mer -

  1. Core PHP intervjufrågor
  2. Fördelar med PHP
  3. Karriär inom PHP
  4. PHP-kommandon
  5. Guide till att överbrygga i JavaScript
  6. Hur fungerar överkörning i C ++?
  7. Övergripande i OOP: er | Behov av att överstiga metoder
  8. Få åtkomst till modifierare i PHP
  9. Övergripande i Java

Kategori: