在php中分析抽象类

时间:2015-07-06 07:10:32

标签: 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();
?>

2 个答案:

答案 0 :(得分:2)

按照定义

  

'抽象类是一个被声明为abstract -it的类,可以是也可以   不包括抽象方法。抽象类无法实例化,   但它们可以是子类。抽象方法是一种方法   声明没有实现'。

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

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

答案 1 :(得分:1)

你的代码是对的。 Abstact类意味着,当你无法创建它的实例时。你不能这样做:

$abstract = new AbstractClass();