繁体   English   中英

在php中分析抽象类

[英]Analyze abstract class in php

我对抽象课有点困惑! 我已经阅读了更多在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();
?>

根据定义

'抽象类是一个声明为abstract的类 - 它可能包含也可能不包含抽象方法。 抽象类无法实例化,但可以进行子类化。 抽象方法是在没有实现的情况下声明的方法。

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

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

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

$abstract = new AbstractClass();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM