Какво е преимущество в PHP?

Overriding е концепция за обектно-ориентирано програмиране, подобна на концепция като клас, обект, капсулация, полиморфизъм, претоварване и т.н. в PHP. Замяна на функциите и класовете се извършва, когато се създаде метод в производен клас, който е същият като този на метода в базовия или родителския клас. И двата метода имат едно и също име и същия брой аргументи.

Как действа преодоляването?

  • Overriding е понятие, при което производният клас на базовия клас изпълнява същото действие като това на базов клас. Това отменяне може да бъде на методи или класове. Ако той е метод с по-голямо значение, тогава името на параметрите на метода се установява, че спецификаторът на достъп е същият като този на метода на родителския клас. Когато не е намерена промяна в прилагането на метода в подклас, получен от базовия клас, по това време се казва, че методът на подклас е отменил метода на базовия клас.
  • Да предположим, че има клас, наречен Person, който има свои собствени свойства и методи за данни. Това е Лицето на родителя или базовия клас с метод, наречен speak (). Сега има още един клас, наречен Employee, който разширява класа Person. Сега този клас Служител има свои собствени свойства и методи на данни, а също така има метод, същият като този на родителския клас eg.speak ().
  • Това, методът говори () присъства в базовия клас, а също и в производния клас.
  • Сега това, което се случва е, когато класът е инстанциран или когато обектът е създаден, кой от метода говори () ще бъде изпълнен, което означава, че се говори за базовия клас или се говори за производен клас, зависи от обекта на класа е наречен.
  • С други думи, ако е създаден обект от клас Person, тогава методът speak () на класа Person се извиква и следователно се изпълнява. Но ако обектът на класа Employee е създаден, тогава ще бъде изпълнен методът speak () на производния клас, който отменя класът speak () на родителския клас.
  • И ето как преодоляването става с пример
  • В примера по-долу има два класа, основен клас и производен клас. Полученият клас разширява базовия клас. Тези класове се инициират и се създават два обекта $ obj1 и $ obj2. $ obj1 е обект на BaseClass, а $ obj2 е обект на производен клас. Тези обекти допълнително извикват методите, декларирани в съответните им класове.
  • Тук ще забележите, че базовият клас и производният клас имат един и същ метод, наречен ABC (). Когато изпълните тази програма, ще забележите, че методът ABC () е надменил метода на базовия клас ABC ().

Пример за преодоляване на метода

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

изход:

Отмяна с модификатори на достъп

Има три модификатора на достъп.

  1. публично: Достъпно от всяка точка на програмата.
  2. частно: Достъпно само от родителския клас.
  3. защитени: Достъпни от базовия клас и производния клас.

Както знаем, защитеният метод е достъпен от базов клас, а изведеният клас може да бъде публично достъпен в подклас, но не частен, тъй като частният е достъпен само в родителския клас. Също така, ако методът на клас има спецификатор за достъп като публичен, тогава методът на преобладаване в извлечения клас не може да бъде деклариран като частен и защитен

Пример за изместване на метода с помощта на модификатори на достъп

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

изход:

Отмяна на крайната ключова дума

Крайната ключова дума се използва за класове и методи. Методи и класове, а не променливи могат да бъдат отменени.

Окончателен метод за отмяна

Когато метод или клас е деклариран като окончателен, тогава преодоляването на този метод или клас не може да се извърши, също така не е възможно наследяването с класа.

Пример за преодоляване на метода с помощта на Final Keyword

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

изход:

Преодоляване на последния клас

Клас, обявен за окончателен, не може да бъде наследен. Един последен клас освен това има окончателен метод заедно с други методи. Но тъй като самият клас е обявен за окончателен, не се използва деклариране на краен метод в окончателен клас.

Пример за преодоляване на класове с помощта на Final Keyword

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

изход:

Препоръчителни статии

Това е ръководство за преодоляване на PHP. Тук обсъждаме какво е преобладаващо и работещо на PHP и различни методи, заедно с примерен код. Можете също да разгледате следните статии, за да научите повече -

  1. Основни въпроси за интервю за PHP
  2. Предимства на PHP
  3. Кариера в PHP
  4. PHP Команди
  5. Ръководство за отмяна на JavaScript
  6. Как преодоляването работи в C ++?
  7. Повишаване в OOPs | Необходимост от преодоляване на метода
  8. Достъп Модификатори в PHP
  9. По-важно в Java