博客列表 >抽象类与应用

抽象类与应用

笑颜常开的博客
笑颜常开的博客原创
2019年04月02日 19:32:27666浏览

<?php
//echo __DIR__.'<br>';
//include __DIR__.'\Test1.php';
//include __DIR__.'\Test2.php';
//require __DIR__.'\Test3.php';
//php标准函数库中提供了一个自动加载文件的注册函数,可以实现这个功能
//这个函数,在当前脚本引用一个未加载的文件时,会自动调用它的回调方法来加载这个文件
//spl_autoload_register(function ($class){
//    require __DIR__.'/'.$class.'.php';
//});
//$Test1=new Test1;
//$Test2=new Test2;
//$Test3=new Test3;
//echo $Test1->get().'<br>';
//echo $Test2->get().'<br>';
//echo $Test3->get().'<br>';
//抽象类
//class Person1{
//    protected $name;
//    //构造函数,初始化本类中的受保护的成员name
//    public function __construct($name='peter zhu')
//    {
//        $this->name=$name;
//    }
////    外部接口,获取类中成员name
//    public function getName(){
//        return $this->name;
//    }
//    //    外部接口,设置类中成员name
//    public function setName($value){
//        $this->name=$value;
//    }
//}
//$person=new Person1();
//echo '我的姓名是:'.$person->getName().'<br>';
//$person->setName('朱老师');
//echo '我的姓名是:'.$person->getName().'<br>';
//echo '<hr>';

abstract class Person2
{
   protected $name;

   protected function __construct($name='peter zhu')
   {
       $this->name = $name;
   }

   public function getName()
   {
       return $this->name;
   }
//修改器方法.声明为抽象方法,不在本类中实现,而在子类中实现
//抽象类
   abstract public function setName($value);
//    {
//        $this->name = $value;
//    }
}
class Stu extends Person2{
   public function __construct($name = 'peter zhu')
   {
       parent::__construct($name);
   }
   public function setName($value)
   {
       // TODO: Implement setName() method.
       $this->name = $value;
   }
}
//调用构造方法,来设置属性
$stu=new Stu('猪哥');
echo 'php中文网创始人:'.$stu->getName().'<br>';

//调用子类的重写的抽象方法setName(),来设置属性
$stu->setName('灭绝师太');
echo 'php中文网前端讲师:'.$stu->getName().'<br>';
//一.抽象类
//在实际开发中,通常不会直接使用一个父类/超类,而是在父类中定义一些方法声明
//并且确信这个方法肯定是会被子类重写的。父类中没必要实现,只要给一个方法编写规范即可
//这个规范包括方法的名称,参数列表等,具体实现就完全交给子类去实现了
//相当于公司的部门主管,接收到老板的任务,只把属于自己的做了,其他部分,设置一个标准交给下属去完成
//这个老板就是接口,我们一会会讲到,这个部门经理,我们用抽象类实现,而下属就是子类啦,最终干活的就是子类。
//类中只有一个成员设置为抽象类,该类就必须设置抽象类
//一个类一旦设置为抽象类,就具备了两个特点:
//1.不能实例化 2.类中抽象方法,在子类中必须实现
//注意
//1.属性设置为抽象无意义,抽象仅针对方法
//2.子类的成员可见性必须等于或高于所继承的抽象类成员可见性,例如抽象类是protected,子类可以是protected/public
//子类重写的抽象方法可见性,究竟用protected/public,要看这个子类是不是最终被客户端访问到,如果是就public,如果不是就protected
//* `abstract`: 定义抽象方法/抽象类
//* 类中只要有一个抽象方法, 该类就应该声明为抽象类
//* 抽象类只能被继承,不能实例化,并且抽象方法必须在子类实现
//* 实现抽象方法的子类方法可见性不能低于抽象方法原定义
//* 抽象方法是public, 子类方法只能是public
//* 抽象方法是protected, 子类方法只能是protected/public
//
//> 一个抽象类必须被扩展为一个特定的类,我们才能创建类实例,使用类中功能
//二.接口
//'interface':指定某个类必须实现的方法,但不要定义方法的具体实现过程
//接口中仅允许出现:方法与类常量
//接口中的方法可见性必须是:public
//接口的方法体必须是:public
//接口是类的代码模板,可以像雷一样有父子继承关系,例如父接口,子接口
//'implements':类实现接口的关键字
//如果仅是部分实现接口中的方法,请用一个抽象类来实现它
//接口--抽象类-->类--->对象
//总经理-->部门经理-->程序员-->代码

上一条:4-1作业下一条:4.1 倒计时
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议