php类知识点滴---类继承的一些原则

  • 完全重写

<?php

class coach

{

   public function __construct()

   {

     echo "欢迎来到~北武堂训练~";

   }

}

class cj extends coach

{

   public function __construct($name)

   {

     echo "哎哟~好久不见了".$name;

   }

}

$cj = new cj('丁大锅');

?>

实例化之后输出结果:

哎哟~好久不见了丁大锅

  • 在原有基础上增强功能(关键表达式:重写功能中 先实现parent::方法名)
<?php
class coach
{
    public function __construct()
    {
        echo "欢迎来到~北武堂训练~";
    }
}
class cj extends coach
{
   public function __construct()
   {
       parent::__construct();
       echo "今天练点什么?力量训练还是站立式格斗还是地面技术";
   }
}
$cj = new cj();
?>

输出结果:

欢迎来到~北武堂训练~今天练点什么?力量训练还是站立式格斗还是地面技术
  • final关键字
final修饰类,意味着该类不能被继承
#错误示例
final class coach
{
public function __construct()
{
echo "欢迎来到~北武堂训练~";
}
}
class cj extends coach
{
public function __construct()
{
parent::__construct();
echo "今天练点什么?力量训练还是站立式格斗还是地面技术";
}
}
$cj = new cj();
?>
输出结果:
Fatal error: Class cj may not inherit from final class (coach)......

final修饰方法,意味着该方法不能被重写
#错误示例
class coach
{
final function __construct()
{
echo "欢迎来到~必图拳馆训练~";
}
}
class xxd extends coach
{
public function __construct()
{
echo "像个男人一样去战斗!";
}
}
$cj = new xxd();
?>

输出结果:
Fatal error: Cannot override final method coach::__construct() in
  • 重写要点
重写的时候权限只能放大,不能缩小
例如父类中的方法修饰符号是public那么子类中的也是public 而不能改成protected 或private等更小的权限
#错误示例
<?php
class coach
{
public function __construct()
{
echo "欢迎来到~必图拳馆训练~";
}
}
class xxd extends coach
{
protected function __construct()
{
echo "像个男人一样去战斗!";
}
}
$cj = new xxd();
?>
输出结果:
Fatal error: Uncaught Error: Call to protected xxd::__construct() from invalid context in

#正确示例:
<?php
class coach
{
public function __construct()
{
echo "欢迎来到~必图拳馆训练~";
}
}
class xxd extends coach
{
public function __construct()
{
echo "像个男人一样去战斗!";
}
}
$cj = new xxd();
?>
输出结果:

像个男人一样去战斗!

 
原文地址:https://www.cnblogs.com/saintdingspage/p/10958647.html