php抽象类
2014-01-10 14:31
274 查看
类本身就已经很抽象了,为什么还要引入抽象类的概念呢?引入抽象类的作用是什么?
有以下代码:
看到没有,父类有个函数叫,而子类都继承了这个方法,因为动物不一样,所以叫声不一样。所以父类中的叫函数的实现是多余的了。为了解决这个问题,抽象类出现了。抽象类就是只能声明,不被实现。
PHP 5 支持抽象类和抽象方法。定义为抽象的类不能被实例化。任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的。被定义为抽象的方法只是声明了其调用方式(参数),不能定义其具体的功能实现。
继承一个抽象类的时候,子类必须定义父类中的所有抽象方法;另外,这些方法的访问控制必须和父类中一样(或者更为宽松)。例如某个抽象方法被声明为受保护的,那么子类中实现的方法就应该声明为受保护的或者公有的,而不能定义为私有的。此外方法的调用方式必须匹配,即类型和所需参数数量必须一致。例如,子类定义了一个可选参数,而父类抽象方法的声明里没有,则两者的声明并无冲突。 这也适用于 PHP 5.4 起的构造函数。在 PHP 5.4 之前的构造函数声明可以不一样的。
有以下代码:
<?php class Animal { public function 叫() { echo '叫'; } } class Dog extends Animal { public function 叫() { echo '汪汪'; } } class Cat extends Animal { public function 叫() { echo '喵呜'; }} ?>
看到没有,父类有个函数叫,而子类都继承了这个方法,因为动物不一样,所以叫声不一样。所以父类中的叫函数的实现是多余的了。为了解决这个问题,抽象类出现了。抽象类就是只能声明,不被实现。
PHP 5 支持抽象类和抽象方法。定义为抽象的类不能被实例化。任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的。被定义为抽象的方法只是声明了其调用方式(参数),不能定义其具体的功能实现。
继承一个抽象类的时候,子类必须定义父类中的所有抽象方法;另外,这些方法的访问控制必须和父类中一样(或者更为宽松)。例如某个抽象方法被声明为受保护的,那么子类中实现的方法就应该声明为受保护的或者公有的,而不能定义为私有的。此外方法的调用方式必须匹配,即类型和所需参数数量必须一致。例如,子类定义了一个可选参数,而父类抽象方法的声明里没有,则两者的声明并无冲突。 这也适用于 PHP 5.4 起的构造函数。在 PHP 5.4 之前的构造函数声明可以不一样的。
相关文章推荐
- php 接口类与抽象类的实际作用
- php 中抽象的方法和抽象类的定义 abstract
- PHP高级——抽象类与接口的区别
- PHP 抽象方法与抽象类abstract关键字介绍及应用
- PHP接口和抽象类的区别
- php抽象类用法实例分析
- 解决困惑已久的“接口”与“抽象”疑惑——力荐《php 接口类与抽象类的实际作用》【收藏】
- 解决困惑已久的“接口”与“抽象”疑惑——力荐《php 接口类与抽象类的实际作用》【收藏】
- 学习使用php抽象类而写的一个实例
- php学习笔记--3. 抽象类 与 对象接口
- php中的抽象类和接口
- PHP基础学习day6(小技巧+抽象类)
- php中抽象类和接口的概念与区别
- php抽象类和接口
- php 抽象类和接口的区别
- PHP:抽象类与接口
- php导出CSV抽象类实例
- php抽象类
- PHP抽象类
- PHP的抽象类、接口的区别和选择