本文实例讲述了PHP抽象类基本用法。分享给大家供大家参考,具体如下:
<?php //抽象类像一个模板,供子类扩展(重写),抽象类里有普通方法(有方法体),也有抽象方法,其中抽象方法没有方法体,且以分号结束。 //只要有一个抽象方法,那么此类必须定义为抽象类。 //抽象类不能创建自己的实例,在试图创建抽象类对象时,会产生一个致使错误。 //在子类里实现抽象类的方法,并且可见性要等于、高于抽象方法的可见性,抽象类(public|protected|private),子类(public|public,protected|有致命错误,且不能被继承)。 //抽象类不能定义私有方法,可以定义私有属性。 //如果子类没有扩展(重写)抽象类的抽象方法,会产生致使错误。 abstract class Employees{ protected $name = null; function __construct($nameStr){ $this->name = $nameStr; } abstract public function work(); public function work1(){ echo "<p>$this->name</p>"; } //function __destruct(){} } class Managers extends Employees{ public function __construct($nameStr){ parent::__construct($nameStr); } /*public function work(){//如果子类没有扩展(重写)抽象类的抽象方法,会产生致使错误。 echo "<p>$this->name is working</p>"; }*/ } //$obj1 = new Employees();//创建抽象类对象时,会产生一个致使错误。 $obj2 = new Managers('e2'); //$obj2->work();
运行上述代码,会提示如下错误信息:
Fatal error: Class Managers contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (Employees::work) in D:\phproot\test\ClassDemo.php on line 26
将错误提示位置及末尾位置代码注释删除后,改为如下代码:
<?php //抽象类像一个模板,供子类扩展(重写),抽象类里有普通方法(有方法体),也有抽象方法,其中抽象方法没有方法体,且以分号结束。 //只要有一个抽象方法,那么此类必须定义为抽象类。 //抽象类不能创建自己的实例,在试图创建抽象类对象时,会产生一个致使错误。 //在子类里实现抽象类的方法,并且可见性要等于、高于抽象方法的可见性,抽象类(public|protected|private),子类(public|public,protected|有致命错误,且不能被继承)。 //抽象类不能定义私有方法,可以定义私有属性。 //如果子类没有扩展(重写)抽象类的抽象方法,会产生致使错误。 abstract class Employees{ protected $name = null; function __construct($nameStr){ $this->name = $nameStr; } abstract public function work(); public function work1(){ echo "<p>$this->name</p>"; } //function __destruct(){} } class Managers extends Employees{ public function __construct($nameStr){ parent::__construct($nameStr); } public function work(){//如果子类没有扩展(重写)抽象类的抽象方法,会产生致使错误。 echo "<p>$this->name is working</p>"; } } //$obj1 = new Employees();//创建抽象类对象时,会产生一个致使错误。 $obj2 = new Managers('e2'); $obj2->work();
测试运行结果:
e2 is working
更多关于PHP相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。
抽象路由类 aiohttp使用抽象类来管理web接口。 aiohttp.web中大部分类都不打算是可以继承的,只有几个是可以继承的。 aiohttp.web建立在这几个概念之上: 应用(application),路由(router),请求(request)和响应(response)。 路由(router)是一个可插拔的部分: 用户可以从头开始创建一个新的路由库,不过其他的部分必须与这个新路由无缝契
本文向大家介绍php中的抽象方法和抽象类,包括了php中的抽象方法和抽象类的使用技巧和注意事项,需要的朋友参考一下 1、什么是抽象方法? 我们在类里面定义的没有方法提的方法就是抽象方法。所谓的没有方法体指的是,在声明的时候没有大括号以及其中的内容,而是直接在声明时在方法名后加上分号结束,另外在声明抽象方法时方法还要加一个关键字"abstract"来修饰。 例如: 2、什么是抽象类? 只要一个类里面
本文向大家介绍PHP 抽象类,包括了PHP 抽象类的使用技巧和注意事项,需要的朋友参考一下 示例 抽象类是无法实例化的类。抽象类可以定义抽象方法,这些方法没有任何主体,只有一个定义: 应该通过子类扩展抽象类,然后可以提供这些抽象方法的实现。 这样的类的主要目的是提供一种模板,该模板允许子类继承,“强制”遵循的结构。让我们用一个例子来详细说明一下: 在此示例中,我们将实现一个Worker接口。首先我
我有一个ABC方法,子类应该返回它们自己的类型,我正在尝试找出最好的方式来类型提示这个方法。例如: 我能想到的最好的是这个,有点重: 我有更好/更干净的方法吗?
本文向大家介绍python抽象基类用法实例分析,包括了python抽象基类用法实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python抽象基类用法。分享给大家供大家参考。具体如下: 定义抽象类,需要使用abc模块,该模块定义了一个元类(ABCMeata),和装饰器 @abstractmethod, @abstractproperty 如果要实例化继承了Foo 的子类,子类必须实
How ABCs Work # abc_base.py import abc class PluginBase(metaclass=abc.ABCMeta): @abc.abstractmethod def load(self, input): """Retrieve data from the input source and return