zoukankan      html  css  js  c++  java
  • PHP中的特殊类,接口类和抽象类(都不能直接实例化)

    接口类不用实例化,需要一一实现接口定义的所有方法。关键字interface implements

    接口interface 是一个规定,给人继承用的东西,有点像抽象类
    在里面定义的方法,却不去实例化,而需要别的类去implements 它,而且必须一一实现接口定义的所有方法,
    实际上接口类说白了,就是一个类的模板,一个类的规定,


    举个例子
    interface Shop
    {
    public function buy($gid);
    public function sell($gid);
    public function view($gid);
    }
    我声明一个shop接口类,定义了三个方法:买(buy),卖(sell),看(view),那么继承此类的所有子类都必须实现这3个方法少一个都不行,
    如果子类没有实现这些话,就无法运行。
    实际上接口类说白了,就是一个类的模板,一个类的规定,
    如果你属于这类,你就必须遵循我的规定,少一个都不行,但是具体你怎么去做,我不管,那是你的事,如:


    class BaseShop implements Shop
    {
    public function buy($gid)
    {
    echo('你购买了ID为 :'.$gid.'的商品');
    }
    public function sell($gid)
    {
    echo('你卖了ID为 :'.$gid.'的商品');
    }
    public function view($gid)
    {
    echo('你查看了ID为 :'.$gid.'的商品');
    }
    }
    ————————————————————————————————————————————————————————————————————————————————————————————————————————

    抽象类&抽象方法  (只能被继承)(关键字 abstract)(继承关键字extends)

    具有抽象方法的类为抽象类,
    抽象方法即为没有内容的空方法,要求子类进行完善内容,
    抽象类不能实例化,只能继承,
    通过extends来实现,抽象类中也可以定义普通方法
     
    父类方法执行方式不确定,但子类还都有这个方法
    例1:如交通工具类:定义抽象方法控制交通工具运行方式,这样每个交通工具如飞机,汽车都要重写父类方法。如果在父类工具类定义该方法(比如在地上走)没有任何意义,因为每个交通工具都要重写(飞机要重写方法,船要重写方法),所以针对你类方法的不确定性,我们需要抽象方法,实现多态。
    例2:定义动物类,每个动物都有叫声方法,但是表面不同,所以要定义为抽象类,让每种动物类去实现功能。
     
    当父类为抽象类时,子类必须重写父类的抽象方法
    抽象类里不一定非要写抽象方法,但有抽象方法的类必须定义为抽象类
    抽象类必须继承使用
    抽象方法不能有主体即{}
    <?php
    abstract class AbstractClass
    {
       // 强制要求子类定义这些方法
        abstract protected function getValue();
        abstract protected function prefixValue($prefix);
     
        // 普通方法(非抽象方法)
        public function printOut() {
            print $this->getValue();
        }
    }
    ________________________________________________________________________________________
















  • 相关阅读:
    测试候选区
    This is my new post
    发布到首页候选区
    nb
    []
    隐藏列(gridview遍历)
    交叉表、行列转换和交叉查询经典
    数据库设计中的14个技巧
    jQuery操作表格,table tr td,单元格
    不愿将多种编程语言杂糅在一起?可能你还没意识到而已
  • 原文地址:https://www.cnblogs.com/yeyublog/p/5857986.html
Copyright © 2011-2022 走看看