关于接口的几个问题

关于接口的几个问题

  1. 接口和抽象类很类似,抽象类也可以实现接口的功能吗,两者有什么区别?

  2. 为什么implements实现接口,会继承接口里的方法呢,那这和直接继承有什么区别?

  3. 下面红框里的完全写法是什么意思?是A类继承了B类,然后再去实现后面的接口吗?
    http://img1.sycdn.imooc.com//climg/5c8b4a980001a38010610483.jpg

正在回答

登陆购买课程后可参与讨论,去登陆

3回答

您好,1.抽象类可以实现接口。抽象类和接口之间的一个主要差别是:类可以实现无限个接口,但仅能从一个抽象类继承。

2.要实现一个接口,使用 implements操作符。类中必须实现接口中定义的所有方法,否则会报一个致命错误。抽象类可以不实例化,所以在实现接口时,可以不实现方法。

3.是的。A继承B实现接口。

祝学习愉快!


  • 雨之赞歌 提问者 #1
    好的,那么关于第二个,implements实现接口和继承是没有关系的吗?
    2019-03-15 15:42:46
  • 好帮手慕查理 回复 提问者 雨之赞歌 #2
    您好,类可以实现接口也可以继承接口,但一般都是实现接口。祝学习愉快!
    2019-03-15 16:24:00
提问者 雨之赞歌 2019-03-15 15:15:22

关于第一点,这两种方法好像都可以实现相同的功能,不知道有什么区别?

<?php

//声明一个接口
interface Con1
{
    public function func1();
}


//实现接口
class Res1 implements Con1{
    public function func1()
    {
        // TODO: Implement func1() method.
    }
}




//声明一个抽象类
abstract class Con2
{
   abstract public function func2();
}

//使用抽象类
class Res2 extends Con2{
    public function func2()
    {
        // TODO: Implement func2() method.
    }
}


提问者 雨之赞歌 2019-03-15 15:03:03

关于第二点,我补充一下,意思是说一个普通类用implements去实现接口,类里什么都不写的话,会报错,但是如果是抽象类的话,不会报错,所以才有了这个问题,是不是implements也有继承的效果,普通类不可以有这种抽象方法的形式所以才报错的。

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师