手册
目录
抽象类和抽象方法是当父类有一个命名的方法,但需要其子类来完成具体任务时使用的。
抽象类是一个至少包含一个抽象方法的类。抽象方法是声明了但在代码中未实现的方法。
抽象类或抽象方法使用 abstract 关键字来定义:
当从抽象类继承时,子类方法必须使用相同的名称,以及相同或更宽松的访问修饰符。因此,如果抽象方法被定义为 protected,子类方法必须定义为 protected 或 public,但不能是 private。此外,必需参数的类型和数量必须相同。但是,子类可以拥有额外的可选参数。
因此,当子类从抽象类继承时,我们遵循以下规则:
让我们看一个例子:
name = $name;
  }
  abstract public function intro() : string;
}
// 子类
class Audi extends Car {
  public function intro() : string {
    return "选择德国品质!我是$this->name!";
  }
}
class Volvo extends Car {
  public function intro() : string {
    return "为身为瑞典人而自豪!我是$this->name!";
  }
}
class Citroen extends Car {
  public function intro() : string {
    return "法国奢华!我是$this->name!";
  }
}
// 从子类创建对象
$audi = new audi("Audi");
echo $audi->intro();
echo "
";
$volvo = new volvo("Volvo");
echo $volvo->intro();
echo "
";
$citroen = new citroen("Citroen");
echo $citroen->intro();
?>
运行实例 »点击 "运行实例" 按钮查看在线实例
Audi、Volvo 和 Citroen 类继承自 Car 类。这意味着 Audi、Volvo 和 Citroen 类可以使用 Car 类的公共 $name 属性和公共 __construct() 方法,这是由于继承机制。
但是,intro() 是一个抽象方法,应该在所有子类中定义,并返回一个字符串。
让我们看另一个例子,其中抽象方法有一个参数:
prefixName("Bill Gates");
echo "
";
echo $class->prefixName("Jane Gates");
?>
运行实例 »点击 "运行实例" 按钮查看在线实例
让我们看另一个例子,其中抽象方法有一个参数,而子类有两个未在父类的抽象方法中定义的可选参数:
prefixName("Bill Gates");
echo "
";
echo $class->prefixName("Jane Gates");
?>
运行实例 »点击 "运行实例" 按钮查看在线实例
相关
视频
RELATED VIDEOS
科技资讯
1
2
3
4
5
6
7
8
9
精选课程
							
							共5课时
17.2万人学习
							
							共49课时
77万人学习
							
							共29课时
61.7万人学习
							
							共25课时
39.3万人学习
							
							共43课时
70.9万人学习
							
							共25课时
61.6万人学习
							
							共22课时
23万人学习
							
							共28课时
33.9万人学习
							
							共89课时
125万人学习