在php中分析抽象类

Meh*_*hdi 5 php class abstract

我对抽象课有点困惑!我已经阅读了更多在stackoverflow和另一个网站上写的帖子,但我不明白!所以我再次看了看我的书,但我也不明白.所以请逐步分析下面的代码:

提前致谢

<?php
abstract class AbstractClass
{
 abstract protected function getValue();
 public function printOut() {
 print $this->getValue();
 }
}
class ConcreteClass1 extends AbstractClass
{
 protected function getValue() {
 return "ConcreteClass1";
 }
}
class ConcreteClass2 extends AbstractClass
{
 protected function getValue() {
 return "ConcreteClass2";
 }
}
$class1 = new ConcreteClass1;
$class1->printOut();

$class2 = new ConcreteClass2;
$class2->printOut();
?>
Run Code Online (Sandbox Code Playgroud)

小智 2

根据定义

\n\n
\n

'抽象类是被声明为抽象的类\xe2\x80\x94它可能包含也可能不包含抽象方法。抽象类无法实例化,但可以对其进行子类化。抽象方法是在没有实现的情况下声明的方法。

\n
\n\n

如果定义了一个抽象类,您应该用另一个类扩展该类。\n如果抽象类中有抽象方法,您应该将它们编写在子类中以便实例化子类。

\n\n

与代码相关,这就是为什么当您实例化 ConcreteClass 时, getValue 函数被“覆盖”到模式,而对 printOut 方法的调用是来自父亲本身,因为它已经被写入并且没有被孩子覆盖。(另请参阅该方法不是抽象的,这就是为什么您也可以从父类中使用它)

\n