博主信息
笑颜常开的博客
博文
61
粉丝
0
评论
0
访问量
28051
积分:0
P豆:211.5

抽象类与应用

2019年04月02日 19:32:27阅读数:307博客 / 笑颜常开的博客/ PHP开发

<?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':类实现接口的关键字
//如果仅是部分实现接口中的方法,请用一个抽象类来实现它
//接口--抽象类-->类--->对象
//总经理-->部门经理-->程序员-->代码

版权申明:本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!

全部评论

文明上网理性发言,请遵守新闻评论服务协议

条评论
  • Java接口的区别:1、接口只有定义,不能有方法的实现,而可以有定义实现;2、实现接口的关键字为implements,继承的关键字为extends;3、接口强调特定功能的实现,而强调所属关系
    接口的联系:1、都可以拥有方法;2、都不可以直接创建对;3、都依靠于子存在才有意义,子必须实现其所有的方法;4、都可以实现多态。
    处就是为项目提供一种组织机制,往往来表征对问题领域进行分析、设计中得出的概念,是对一系列看上去不同,但是本质上相同的具体概念的
    Java接口区别:1、可以提供某些方法的部分实现,而接口不可以;2、是单个继承机制,其子不一定要实现父中的所有没实现的方法,而接口一个可以有多个接口,并且方法都要实现。
    来捕捉子的通特性的,是被来创建继承层级里子的模板。
    区别:1、可以有属性、普通方法、方法,但接口不能有属性、普通方法、可以有常量;2、abstract关键字在前声明,且有class声明为,接口是interface来声明,但不能class
    的关系是:和对之间是具体的关系。是一个模板,是对一事物的描述;对于表示现实中该事物的个体。是在对之上的,对则是的具体化,是的实例。
    的特点是:1、方法都需要abstract修饰;2、中可以没有方法,但方法一定在中;3、不能直接创造对;4、有构造方法。
    方法是指在中定义的没有方法体的方法。如果一个中有一个方法是方法,那么这个就是中可以包含非方法。在声明方法和时,需要使abstract关键字来修饰。
    php中和接口的不同点有:1、可以有属性和普通方法,接口不能有属性和普通方法;2、中不一定有方法,接口中一定有方法;3、方法必须abstract声明,但接口不需要
    php中的和接口的区别:1、可以有属性、普通方法,接口不能有属性和普通方法;2、中未必有方法,接口中一定有方法;3、使abstract关键字声明,接口使interface
    PHP的和接口的区别:1、abstract关键字在前声明,且有class声明为,接口是interface来声明,但不能class来声明;2、方法一定要abstract
    数据型是一种对“数据结构”的描述,这种描述是“”的,描述内容有:1、数据对集;2、数据集合相关联的操作集。
    一个只能有一个对,不对。户定义的一种数据型,可以使这个型来说明一个或多个变量,及对是一种的数据型,是对对;对是对客观事物的
    多态存在的必要条件:1、继承;2、重写;3、父指向子;多态的实现方式:1、重写;2、接口;3、方法。

    2020-06-28

    1087

    是对问题领域进行分析、设计中得出的概念,是对一系列看上去不同,但是本质上相同的具体概念的是不完整的,它只能作基来进行型隐藏和充当全局变量的角色。
    php中和对的区别:是对,对的具体实例;的,不占内存,而对是具体的,占有内存空间。打个比方:就是水果,对就是苹果。
    在php中,面向对就是将要处理的问题为对,然后通过对的属性和行为来解决对的实际问题。
    是指现实生活中具体存在的一个食物;是指对某种食物的共同属性行为的取。
    js中,通常把创建对的过程称为实例化,实例化对就是创建对的过程。