💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、豆包、星火、月之暗面及文生图、文生视频 广告
# 抽象类和接口的区别 ## **抽象类和接口的区别** **抽象类和接口的联系** 1.都是类 2.都可以定义**常量**和**抽象方法** 3.子类继承抽象类或者实现接口,**必须实现所有的抽象方法**,如果不能实现所有抽象方法,就必须申明为抽象类 4.接口和抽象类都是定义规则的 5.接口的方法必须是公开的即public **区别:** 1.抽象类可以定义**普通属性**和**普通方法**而接口不能 2.抽象类的抽象方法必须加上abstract,接口中抽象方法省略了abstract(默认抽象方法) 3.子类只能继承一个抽象类,但是可以实现多个接口 例子: ``` <pre class="calibre17">``` abstract class <span class="token4">Person</span> <span class="token3">{</span> public $name <span class="token1">=</span> <span class="token2">'张三'</span><span class="token3">;</span> const USER <span class="token1">=</span> <span class="token2">'root'</span><span class="token3">;</span> public <span class="token5">function</span> <span class="token4">demo</span><span class="token3">(</span><span class="token3">)</span> <span class="token3">{</span> echo <span class="token2">'你好'</span><span class="token3">;</span> <span class="token3">}</span> abstract public <span class="token5">function</span> <span class="token4">eat</span><span class="token3">(</span><span class="token3">)</span><span class="token3">;</span> <span class="token3">}</span> interface <span class="token4">Boy</span> <span class="token3">{</span> const HOST <span class="token1">=</span> <span class="token2">'localhost'</span><span class="token3">;</span> public <span class="token5">function</span> <span class="token4">demo</span><span class="token3">(</span><span class="token3">)</span><span class="token3">;</span> <span class="token3">}</span> <span class="token">// 继承了Person类,实现Boy接口 </span> class <span class="token4">Girl</span> extends <span class="token4">Person</span> implements <span class="token4">Boy</span> <span class="token3">{</span> public <span class="token5">function</span> <span class="token4">eat</span><span class="token3">(</span><span class="token3">)</span> <span class="token3">{</span> echo <span class="token2">'今天中午吃个麻辣香锅'</span><span class="token3">;</span> <span class="token3">}</span> public <span class="token5">function</span> <span class="token4">demo</span><span class="token3">(</span><span class="token3">)</span> <span class="token3">{</span> echo <span class="token2">'有点辣,放点胡椒吧'</span><span class="token3">;</span> <span class="token3">}</span> <span class="token3">}</span> ``` ```