前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >php-抽象类和接口

php-抽象类和接口

作者头像
kdyonly
发布2023-03-03 19:24:03
2630
发布2023-03-03 19:24:03
举报
文章被收录于专栏:个人编程笔记个人编程笔记

浏览量 1

抽象类 任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的。 定义为抽象的类不能被实例化。 被定义为抽象的方法只是声明了其调用方式(参数),不能定义其具体的功能实现。 继承一个抽象类的时候,子类必须定义父类中的所有抽象方法;另外,这些方法的访问控制必须和父类中一样(或者更为宽松)

代码语言:javascript
复制
<?php
abstract class AbstractClass{
// 强制要求子类定义这些方法    
abstract protected function getValue();    
abstract protected function prefixValue($prefix);    
// 普通方法(非抽象方法)    
public function printOut() {        
    print $this->getValue() . PHP_EOL;    
    }
}
class ConcreteClass1 extends AbstractClass{    
    protected function getValue() {        
        return "ConcreteClass1";    
    }    
    public function prefixValue($prefix) {        
        return "{$prefix}ConcreteClass1";    
        }
    }
class ConcreteClass2 extends AbstractClass{    
    public function getValue() {        
        return "ConcreteClass2";    
    }    
    public function prefixValue($prefix) {        
        return "{$prefix}ConcreteClass2";    
    }
}
$class1 = new ConcreteClass1;
$class1->printOut();
echo $class1->prefixValue('FOO_') . PHP_EOL;
$class2 = new ConcreteClass2;
$class2->printOut();
echo $class2->prefixValue('FOO_') . PHP_EOL;
?>

接口 使用接口(interface),可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容。 接口是通过 interface 关键字来定义的,就像定义一个标准的类一样,但其中定义所有的方法都是空的。 接口中定义的所有方法都必须是公有,这是接口的特性。 要实现一个接口,使用 implements 操作符。类中必须实现接口中定义的所有方法,否则会报一个致命错误。类可以实现多个接口,用逗号来分隔多个接口的名称。

代码语言:javascript
复制
<?php
// 声明一个'iTemplate'接口
interface iTemplate{    
    public function setVariable($name, $var);    
    public function getHtml($template);
}
// 实现接口
class Template implements iTemplate{    
    private $vars = array();      
    public function setVariable($name, $var){        
        $this->vars[$name] = $var;    
    }      
    public function getHtml($template){
        foreach($this->vars as $name => $value) {            
            $template = str_replace('{' . $name . '}', $value, $template);             }        
        return $template;    
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-11-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档