php抽象类详解

小云云
小云云 原创
2023-03-21 13:24:01 1368浏览

PHP 5 支持抽象类和抽象方法。定义为抽象的类不能被实例化。任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的。被定义为抽象的方法只是声明了其调用方式(参数),不能定义其具体的功能实现。

注意:

  1. 继承一个抽象类的时候,子类必须定义父类中的所有抽象方法;

  2. 另外,这些方法的访问控制必须和父类中一样(或者更为宽松)。

  3. 方法的调用方式必须匹配,即类型和所需参数数量必须一致。

例:

<?phpabstract class AbstractClass{
    // 我们的抽象方法仅需要定义需要的参数
    abstract protected function prefixName($name);}class ConcreteClass extends AbstractClass{

    // 我们的子类可以定义父类签名中不存在的可选参数
    // 该访问控制只能是公有的(public)或受保护(protected)的
    public function prefixName($name, $separator = ".") {
        if ($name == "Pacman") {            $prefix = "Mr";
        } elseif ($name == "Pacwoman") {            $prefix = "Mrs";
        } else {            $prefix = "";
        }        return "{$prefix}{$separator} {$name}";
    }
}$class = new ConcreteClass;echo $class->prefixName("Pacman"), "\n";echo $class->prefixName("Pacwoman"), "\n";?>

结果:

Mr. Pacman
Mrs. Pacwoman

分析:

虽然子类定义了一个可选参数,而父类抽象方法的声明里没有,但和注意中的第三点并无冲突

相关推荐:

php抽象类的实现方法详解

php抽象类、接口的区别和选择实例详解

php抽象类特性实例详解

以上就是php抽象类详解的详细内容,更多请关注php中文网其它相关文章!

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。