PHP中抽象类和接口类看法

  • 含有抽象方法的类一定是抽象类

  • 抽象类不一定含有抽象方法

  • 抽象类中可以有普通的方法

  • 抽象类不能直接实例化,必须由一个子类继承它。并把所有父类中的抽象方法都实现(重写),新的实现方法的参数的个数应该和抽象方法的参数个数一样,重新生成对应的类型提示。

    abstract class person{
    //定义抽象方法:修饰词:abstract 方法是没有方法体的 
    public abstract function say($name); 
    public abstract function run();
    public function eat(){
    echo 'eat...'; 
    } 
    } 
    class student extends person{ 
    public function say($name){ 
    echo "{$name}say..."; 
    } 
    public function run()
    { 
    echo 'run...'; 
    } 
    } 
    $student = new student ();
    $student -> say('lisi');
    echo "<hr />"; $student -> eat();
    
  • 接口 声明关键字 interface

  • 接口中可以声明常量也可以声明抽象方法

  • 接口中的方法都是抽象方法不需要使用abstract修饰

  • 接口不能实例化,需要用一个类去实现它(implements)

  • 一个类可以实现多个接口(解决了php单继承的问题)

    interface person{
    const Name='lwb'; 
    public function run(); 
    public function say(); 
    } 
    interface learn{
    public function study();
    } 
    class student implements person,learn{
    public function run(){ 
    echo 'run...'; 
    } 
    public function say(){ 
    echo 'say...';
    } 
    public function study(){ 
    echo 'study...'; 
    } 
    }
    $student = new student(); 
    $student -> run(); 
    echo "<hr />"; 
    echo $student::Name."<hr />";
    $student -> say() echo "<hr />";
    $student -> study();
    

下面是面试题中网络答案所见

  • 接口用于规范,抽象类用于共性。

  • 接口中只能声明方法,属性,事件,索引器。而抽象类中可以有方法的实现,也可以定义非静态的类变量。

  • 抽象类是类,所以只能被单继承,但是接口却可以一次实现多个。

  • 抽象类可以提供某些方法的部分实现,接口不可以.

  • 抽象类的实例是它的子类给出的。接口的实例是实现接口的类给出的。

  • 再抽象类中加入一个方法,那么它的子类就同时有了这个方法。而在接口中加入新的方法,那么实现它的类就要重新编写(这就是为什么说接口是一个类的规范了)。

  • 接口成员被定义为公共的,但抽象类的成员也可以是私有的、受保护的、内部的或受保护的内部成员(其中受保护的内部成员只能在应用程序的代码或派生类中访问)。

  • 此外接口不能包含字段、构造函数、析构函数、静态成员或常量

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值