¿Qué es anular en PHP?
La anulación es un concepto de programación orientada a objetos que es similar a un concepto como clase, objeto, encapsulación, polimorfismo, sobrecarga, etc.en PHP. La anulación de funciones y clases se realiza cuando se crea un método en la clase derivada que es el mismo que el método en la clase base o la clase padre. Ambos métodos tienen el mismo nombre y el mismo número de argumentos.
¿Cómo funciona la anulación?
- La anulación es un concepto en el que la clase derivada de la clase base realiza la misma acción que la de una clase base. Esta anulación puede estar en métodos o clases. Si se trata de anular el método, entonces el nombre del método de los parámetros, se encuentra que el especificador de acceso es el mismo que el del método de la clase principal. Cuando no se encuentra ningún cambio en la implementación del método en la subclase derivada de la clase base, en ese momento se dice que el método de la subclase ha anulado el método de la clase base.
- Supongamos que hay una clase llamada Persona que tiene sus propias propiedades y métodos de datos. Esta es la persona principal o de clase base con un método llamado speak (). Ahora hay una clase más llamada Empleado que extiende la clase Persona. Ahora, esta clase Employee tiene sus propias propiedades y métodos de datos y también tiene un método igual al de la clase padre, por ejemplo, speak ().
- Este método habla () está presente en la clase base y también en la clase derivada.
- Ahora lo que sucede es cuando se instancia la clase o cuando se crea el objeto, cuál de los métodos speak () se ejecutará, lo que significa que hablar de la clase base o hablar de la clase derivada se ejecuta depende del objeto de la clase se llama.
- En otras palabras, si se crea un objeto de la clase Person, se llama al método speak () de la clase Person y, por lo tanto, se ejecuta. Pero si se crea el objeto de la clase Employee, se ejecutará el método speak () de la clase derivada, que anula la clase speak () de la clase padre.
- Y así es como ocurre la anulación con un ejemplo
- En el siguiente ejemplo, hay dos clases, clase base y clase derivada. La clase derivada extiende la clase base. Estas clases se inician y se crean dos objetos $ obj1 y $ obj2. $ obj1 es un objeto de BaseClass y $ obj2 es un objeto de una clase derivada. Estos objetos además llaman a los métodos declarados en sus respectivas clases.
- Aquí observará que la clase base y la clase derivada tienen el mismo método llamado ABC (). Cuando ejecute este programa, notará que el método ABC () ha anulado el método de la clase base ABC ().
Ejemplo de anulación de método
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();
Salida:
Anulación con modificadores de acceso
Hay tres modificadores de acceso.
- public: accesible desde cualquier parte del programa.
- privado: accesible solo desde la clase principal.
- protegido: accesible desde la clase base y la clase derivada.
Como sabemos, el método protegido es accesible desde una clase base y la clase derivada se puede hacer pública en la subclase pero no privada, ya que solo es accesible en la clase primaria. Además, si un método de clase tiene un especificador de acceso como público, entonces el método de anulación en la clase derivada no puede declararse como privado y protegido
Ejemplo de anulación de métodos con modificadores de acceso
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();
salida:
Anulación con la palabra clave final
La palabra clave final se usa para clases y métodos. Métodos y clases, no se pueden anular variables.
Método final de anulación
Cuando un método o una clase se declara como final, entonces no se puede anular ese método o clase, tampoco es posible la herencia con la clase.
Ejemplo de anulación de método usando la palabra clave final
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();
Salida:
Anulación de clase final
Una clase declarada como final no se puede heredar. Una clase final tiene además un método final junto con otros métodos. Pero dado que la clase en sí misma se declara final, no tiene sentido declarar un método final en una clase final.
Ejemplo de anulación de clase usando la palabra clave final
// 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();
Salida:
Artículos recomendados
Esta es una guía para sobrescribir en PHP. Aquí discutimos lo que está anulando y funcionando de PHP y diferentes métodos junto con el código de muestra. También puede consultar los siguientes artículos para obtener más información:
- Preguntas principales de la entrevista PHP
- Ventajas de PHP
- Carrera en PHP
- Comandos PHP
- Guía para anular en JavaScript
- ¿Cómo funciona la anulación en C ++?
- Anulación en POO | Necesidad de anulación de métodos
- Modificadores de acceso en PHP
- Anulación en Java