PHP的接口和抽象类到底是什么意思?

❶ 什么是接口呀?(第1个为什么)

问题:玩具店要进好多不同的玩具,怎么让它们都能做好自己的事儿呢?
答案:接口就像是玩具的“本领说明书”。比如“会唱歌的玩具”接口,只要玩具说自己遵守这个接口,那它就得会唱歌。它只规定了玩具得有什么本领,但是不告诉玩具具体怎么去施展这个本领。
比喻:就像老师给小朋友们布置画画的任务,只说要画一幅画,没说具体怎么画。

❷ 为什么要有接口呢?(第2个为什么)

因为玩具太多啦,如果没有统一的“本领说明书”,就不知道每个玩具能干啥。有了接口,不管是新玩具还是旧玩具,只要遵守同一个接口,我们就知道它有啥本领。比如看到遵守“会跳舞的玩具”接口的玩具,就知道它能跳舞。
作用:能让玩具店老板清楚每个玩具的能力,也方便管理玩具。

❸ 接口存储的真实内容是啥样的?(第3个为什么)

接口里存的是一些“本领要求”,也就是方法的名字。比如“会发光的玩具”接口,里面就写着“发光”这个方法名,但没有写怎么发光。
PHP代码比喻:

interface ShiningToy {
    public function shine();
}

这里的shine就是一个“本领要求”,但没写具体实现。

❹ 接口包含哪些部分呢?(第4个为什么)

接口主要包含方法的声明。就是只说有这个方法,但是没有方法里面具体要做的事情。就像上面说的“发光”方法,只提了名字,没写发光的步骤。

❺ 接口的使用场景有哪些呀?(第5个为什么)

场景一:玩具店进了很多不同品牌的会说话的玩具,这些玩具都可以遵守“会说话的玩具”接口。这样不管是哪个品牌的玩具,我们都能让它们说话。
场景二:有很多新玩具加入玩具店,用接口可以快速规定它们的本领,方便分类和管理。

❻ 接口的底层原理是啥呢?(第6个为什么)

底层原理就是PHP会检查遵守接口的类有没有实现接口里规定的所有方法。如果没有实现,就会报错。就像老师检查小朋友有没有完成画画任务一样,没完成可不行。

❼ 什么是抽象类呢?(第7个为什么)

问题:有些玩具虽然有一些共同的特点,但是有些部分又不太一样,该怎么处理呢?
答案:抽象类就像是玩具的“模板”。比如“电动玩具”抽象类,里面有一些所有电动玩具都有的特点,像“充电”方法,但是有些特点每个电动玩具又不一样,就先不具体写出来。
比喻:就像做蛋糕的模板,有蛋糕的大致形状,但是上面的装饰可以每个蛋糕都不一样。

❽ 为什么要有抽象类呢?(第8个为什么)

因为有些玩具的共性可以提取出来,用抽象类可以避免重复写代码。而且抽象类里有些没写完的部分,可以让不同的玩具自己去完善。比如不同的电动玩具充电的方式可能有点不同,就可以在具体的玩具类里去写。
作用:能节省代码,还能让代码更有条理。

❾ 抽象类存储的真实内容是啥样的?(第9个为什么)

抽象类里有已经写好的方法,也有只声明没实现的抽象方法。比如“电动玩具”抽象类里,“充电”方法可能已经写好了怎么连接电源,但是“移动”方法可能只声明了,没写具体怎么移动。
PHP代码比喻:

abstract class ElectricToy {
    public function charge() {
        echo "连接电源充电";
    }
    abstract public function move();
}

这里的charge方法有具体实现,move方法就是抽象方法,等着具体的玩具类去实现。

❿ 抽象类的使用场景和底层原理是啥呀?(第10个为什么)

使用场景:当很多玩具都有一些共同特点,但是又有一些不同的地方时,就可以用抽象类。比如各种电动交通工具玩具,都需要充电,但是行驶方式不同。
底层原理:PHP不允许直接创建抽象类的对象,必须有具体的类去继承抽象类,并且实现里面的抽象方法。就像不能直接用蛋糕模板当蛋糕吃,得用这个模板做出具体的蛋糕才行。

总结一下

接口就像是玩具的“本领说明书”,只规定本领,不写具体做法;抽象类就像是玩具的“模板”,有一些通用的部分,也有留给具体玩具去完善的部分。它们都能让玩具店(也就是我们的程序)更好管理和开发哦。

你可能感兴趣的:(PHP,php)