Co je v PHP přepsáno?

Přepisování je koncept objektově orientovaného programování, který je podobný konceptu jako třída, objekt, zapouzdření, polymorfismus, přetížení atd. V PHP. Přepsání funkcí a tříd se provádí, když je vytvořena metoda v odvozené třídě, která je stejná jako metoda v základní třídě nebo nadřazené třídě. Obě tyto metody mají stejný název a stejný počet argumentů.

Jak funguje Overriding?

  • Přepisování je koncept, kdy odvozená třída základní třídy provádí stejnou akci jako základní třída. Toto přepsání může být na metodách nebo třídách. Pokud jde o přepis metody, pak název metody parametry, shledá se, že specifikátor přístupu je stejný jako u metody nadřazené třídy. Pokud nenastane žádná změna v implementaci metody v podtřídě odvozené od základní třídy, pak se říká, že metoda podtřídy potlačila metodu základní třídy.
  • Předpokládejme, že existuje třída s názvem Osoba, která má své vlastní datové vlastnosti a metody. Toto je osoba nadřazené nebo základní třídy s metodou nazvanou talk (). Nyní existuje ještě jedna třída nazvaná Zaměstnanec, která rozšiřuje třídu Person. Nyní má tato třída zaměstnanců své vlastní datové vlastnosti a metody a také má stejnou metodu jako rodičovská třída eg.speak ().
  • Tato metoda mluví () je přítomna v základní třídě a také v odvozené třídě.
  • Nyní, co se stane, když je třída instancí nebo když je objekt vytvořen, která z metody talk () bude vykonána, což znamená, že mluvení o základní třídě nebo mluvení o odvozené třídě je vykonáno, závisí na objektu třídy je nazýván.
  • Jinými slovy, pokud je vytvořen objekt třídy Person, je volána metoda talk () třídy Person, a proto je vykonána. Pokud je ale vytvořen objekt třídy Zaměstnanec, bude provedena metoda talk () odvozené třídy, která přepíše třídu talk () nadřazené třídy.
  • A tady je příklad toho, jak převažuje
  • V níže uvedeném příkladu jsou dvě třídy, základní třída a odvozená třída. Odvozená třída rozšiřuje základní třídu. Tyto třídy jsou iniciovány a jsou vytvořeny dva objekty $ obj1 a $ obj2. $ obj1 je objekt BaseClass a $ obj2 je objekt odvozené třídy. Tyto objekty dále nazývají metody deklarované v příslušných třídách.
  • Zde uvidíte, že základní třída a odvozená třída mají stejnou metodu nazvanou ABC (). Při spuštění tohoto programu si všimnete, že metoda ABC () přepsala metodu základní třídy ABC ().

Příklad přepsání 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();

Výstup:

Přepsání s modifikátory přístupu

Existují tři modifikátory přístupu.

  1. public: Přístupné odkudkoli v programu.
  2. soukromý: Přístupný pouze z nadřazené třídy.
  3. Chráněno: Přístupné ze základní třídy az odvozené třídy.

Jak víme, chráněná metoda je přístupná ze základní třídy az odvozené třídy, může být zveřejněna v podtřídě, ale ne soukromá, protože soukromá je přístupná pouze v nadřazené třídě. Také pokud má metoda třídy přístupový specifikátor jako veřejný, nelze nadřazenou metodu v odvozené třídě deklarovat jako soukromou a chráněnou

Příklad přepsání metody pomocí modifikátorů přístupu

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

výstup:

Převažující s konečným klíčovým slovem

Konečné klíčové slovo se používá pro třídy a metody. Metody a třídy, nikoli proměnné, lze přepsat.

Konečné přepsání metody

Pokud je metoda nebo třída deklarována jako konečná, není možné tuto metodu nebo třídu provést, nelze také zdědit třídu.

Příklad přepsání metody pomocí konečného klíčového slova

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

Výstup:

Vyřazení závěrečné třídy

Třídu deklarovanou jako konečnou nelze zdědit. Finální třída má konečnou metodu spolu s dalšími metodami. Ale protože třída samotná je prohlášena za konečnou, nelze použít deklaraci konečné metody v konečné třídě.

Příklad potlačení třídy pomocí konečného klíčového slova

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

Výstup:

Doporučené články

Toto je průvodce k Overriding v PHP. Zde diskutujeme o tom, co je prvořadým a fungujícím PHP a různými metodami spolu s ukázkovým kódem. Další informace naleznete také v následujících článcích -

  1. Základní otázky PHP Interview
  2. Výhody PHP
  3. Kariéra v PHP
  4. Příkazy PHP
  5. Průvodce přepisováním v JavaScriptu
  6. Jak převažuje práce v C ++?
  7. Převažující v OOP Potřeba převodu metody
  8. Přístup modifikátory v PHP
  9. Převažující v Javě

Kategorie: