php中abstract和interface有什么区别

34次阅读
没有评论

共计 902 个字符,预计需要花费 3 分钟才能阅读完成。

在 PHP 中,abstract 和 interface 是两种不同的概念和用法。

  1. abstract(抽象类):
  • 抽象类是用于继承的类,不能被实例化。
  • 抽象类可以包含抽象方法和非抽象方法。
  • 抽象方法是没有具体实现的方法,只有方法的声明。
  • 子类继承抽象类后,必须实现抽象类中的所有抽象方法。
  • 抽象类可以包含属性、常量和非抽象方法的具体实现。

示例代码:

abstract class Animal {protected $name;
    
    abstract public function sound();
    
    public function setName($name) {$this->name = $name;
    }
}

class Cat extends Animal {public function sound() {return 'Meow';
    }
}

$cat = new Cat();
$cat->setName('Kitty');
echo $cat->sound(); // Output: Meow
  1. interface(接口):
  • 接口是一种约定,用于定义类应该实现的方法。
  • 接口中只能包含抽象方法和常量,不能包含属性和方法的具体实现。
  • 类实现接口后,必须实现接口中定义的所有方法。
  • 一个类可以实现多个接口。

示例代码:

interface Animal {public function sound();
}

interface Pet {public function getName();
}

class Cat implements Animal, Pet {public function sound() {return 'Meow';
    }
    
    public function getName() {return 'Kitty';
    }
}

$cat = new Cat();
echo $cat->sound(); // Output: Meow
echo $cat->getName(); // Output: Kitty

综上所述,abstract 是用于类的继承和实现的,可以包含具体的方法实现和属性,而 interface 是用于定义类应该实现的方法,只能包含抽象方法和常量。

丸趣 TV 网 – 提供最优质的资源集合!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-12发表,共计902字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)