Palabra clave final en class php
En este ejemplo mostrare el efecto de la palabra clave final la cual impide que las clases hijas sobrescriban un método (Fuente: php), por lo que mostrare un ejemplo en el cual una clase hija intente sobre escribir un método de este tipo.
aquí el código:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>appletenhtml: palabra clave final</title>
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
</head>
<body>
<section>
<?php
class padre2{}
//final se utiliza en metodos y clases
//class con final no puede ser heredada
final class Padre{
//con final el metodo no puede ser modificado
final public function test(){
echo "Esto es una prueba<br>";
}
}
class Hija extends Padre2{
public function test2(){
echo "Modificando metodo de clase padre<br>";
}
}
$P = new Padre();
$H = new Hija();
$P->test();
$H->test();
?>
</section>
</body>
</html>
Como defectos del codigog debido a las reglas:
la class con final no puede ser heredada y con final el método no puede ser modificado
aquí el código:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>appletenhtml: palabra clave final</title>
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
</head>
<body>
<section>
<?php
class padre2{}
//final se utiliza en metodos y clases
//class con final no puede ser heredada
final class Padre{
//con final el metodo no puede ser modificado
final public function test(){
echo "Esto es una prueba<br>";
}
}
class Hija extends Padre2{
public function test2(){
echo "Modificando metodo de clase padre<br>";
}
}
$P = new Padre();
$H = new Hija();
$P->test();
$H->test();
?>
</section>
</body>
</html>
la class con final no puede ser heredada y con final el método no puede ser modificado
Comentarios
Publicar un comentario