包含PHPABSTRACT的词条
php abstract class和interface有什么区别
两者都是抽象类,都不能实例化。 interface 实现类及 abstract class 的子类都必须要实现已经声明的抽象方法。interface 需要实现,要用 implements ,而 abstract class 需要继承,要用 extends 。一个类可以实现多个 interface ,但一个类只能继承一个 abstract class 。interface 强调特定功能的实现,而 abstract class 强调所属关系。尽管 interface 实现类及 abstract class 的子类都必须要实现相应的抽象方法,但实现的形式不同。 interface 中的每一个方法都是抽象方法,都只是声明的 (declaration, 没有方法体 ) ,实现类必须要实现。而 abstract class 的子类可以有选择地实现。这个选择有两点含义: a) abstract class 中并非所有的方法都是抽象的,只有那些冠有 abstract 的方法才是抽象的,子类必须实现。那些没有 abstract 的方法,在 abstract class中必须定义方法体; b) abstract class 的子类在继承它时,对非抽象方法既可以直接继承,也可以覆盖;而对抽象方法,可以选择实现,也可以留给其子类来实现,但此类必须也声明为抽象类。既是抽象类,当然也不能实例化。希望能帮到你,我也是在后盾人平台看老师讲到的,(=TェT=)努力吧??
php中abstract与interface区别?
抽象类和接口,其实本质也差不多,接口可以理解成特殊的抽象类。语法上有些区别,抽象类中可以有变量,接口中不能有变量,抽象类是被继承,关键字用extends,接口被实现,关键字implements 以及其他区别等等,这里就不说了。
PHP的变量如何给抽象类中属性符初值
因为抽象类不能被实例化,所以需要通过继承的方式为属性赋值:
前提是抽象类中需要赋值的属性不能被private修饰
?php
abstract class AbstractClass
{
public $a = 1;
abstract protected function getValue();
// 普通方法(非抽象方法)
public function printOut() {
echo $this-a . "\n";
}
}
class ConcreteClass1 extends AbstractClass
{
protected function getValue() {}
}
$b = new ConcreteClass1();
$b-a = 2;
$b-printOut();
?