Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP,OOP,不同的公式_Php_Oop_Class_Interface_Abstract - Fatal编程技术网

PHP,OOP,不同的公式

PHP,OOP,不同的公式,php,oop,class,interface,abstract,Php,Oop,Class,Interface,Abstract,我正在研究抽象和界面的区别,我读了一些句子 说 子类只能扩展单个抽象(或任何其他)类, 而一个接口可以扩展,或者一个类可以实现多个 其他接口 我理解他所说的“一个子类只能扩展一个抽象(或任何其他)类”,他的意思是: class first { public function Search() { return 'Hellow'; } } abstract class first2 extends first { } class second exte

我正在研究抽象和界面的区别,我读了一些句子 说

子类只能扩展单个抽象(或任何其他)类, 而一个接口可以扩展,或者一个类可以实现多个 其他接口

我理解他所说的“一个子类只能扩展一个抽象(或任何其他)类”,他的意思是:

class first
{
    public function Search()
    {
        return 'Hellow';
    }
}

abstract class first2 extends first
{

}

class second extends first2
{   

}

$ob = new second();
echo $ob->Search();
然而,我不理解他那句话的其余部分,他说,“一个接口可以扩展,或者一个类可以实现多个其他接口。”

有人能解释一下他的最后一句话并添加一个代码示例吗?
谢谢大家,祝你们度过愉快的一天。

您可以实现多个接口

interface C {
  public function method1();
}

interface D {
  public function method2();
}

class A implements C,D {

   //implement from interface C
   public function method1() {

   }
   //implement from interface D
   public function method2() {

   }
}
在这里,您需要从接口C和D实现方法。您还可以在接口内扩展接口,如普通类

interface D extends C{}
当你需要一些常用的方法时,它很有用。所以,您将“模式”写入接口,希望从基类实现哪些方法

虽然抽象是单个扩展类,但不能为其创建实例,只能扩展。当您想要拥有一些具有公共功能或抽象方法的基类(稍后应该实现这些方法)时,它非常有用


更多信息请访问

谢谢gearsdigital提供的链接。谢谢Alickus,我知道现在祝您愉快。基类几乎总是糟糕的设计。继承的思想不是收集某种Blob/God类中常用的功能。继承的思想是有一些定义良好的超类,然后在子类中有一些特殊的情况/变体。是的,Blob类是邪恶的,我不是说它,有时当你需要公共功能时,比如说MVC抽象模型,控制器类将有一些方法是共享的,并且具有公共功能。继承的思想也是为了避免代码重复。不提扩展代码。一般来说,最好