Nicksxs's Blog

What hurts more, the pain of hard work or the pain of regret?

0%

# php-abstract-class-and-interface

发表于 2016-11-10 更新于 2020-01-12 分类于 php 阅读次数： 阅读次数： Disqus：

## PHP抽象类和接口

- 抽象类与接口
- 抽象类内可以包含非抽象函数，即可实现函数
- 抽象类内必须包含至少一个抽象方法，抽象类和接口均不能实例化
- 抽象类可以设置访问级别，接口默认都是public
- 类可以实现多个接口但不能继承多个抽象类
- 类必须实现抽象类和接口里的抽象方法，不一定要实现抽象类的非抽象方法
- 接口内不能定义变量，但是可以定义常量

## 示例代码

    <?php
    interface int1{
        const INTER1 = 111;
        function inter1();
    }
    interface int2{
        const INTER1 = 222;
        function inter2();
    }
    abstract class abst1{
        public function abstr1(){
            echo 1111;
        }
        abstract function abstra1(){
            echo 'ahahahha';
        }
    }
    abstract class abst2{
        public function abstr2(){
            echo 1111;
        }
        abstract function abstra2();
    }
    class normal1 extends abst1{
        protected function abstr2(){
            echo 222;
        }
    }

## result

    PHP Fatal error:  Abstract function abst1::abstra1() cannot contain body in new.php on line 17

    Fatal error: Abstract function abst1::abstra1() cannot contain body in php on line 17