在本教程中,我们将学习PHP的抽象类和抽象方法,以及如何使用抽象类来定义类的层次结构框架。
在继承层次结构中,子类实现特定的细节,而父类定义了框架。父类还提供将由其子类实现的公共方法的模板。为了使父类更加通用和抽象,PHP提供了抽象方法和抽象类。
抽象方法是没有实现的方法。要创建抽象方法,你可以使用abstract关键字。如下所示:
abstract
public
function
abstractMethod();
抽象类是至少包含一个抽象方法的类。要声明抽象类,一样也是使用abstract关键字,如下所示:
<?php
class
abstractClass{
//.. 其他方法和属性
}
让我们看一个例子来了解抽象类和抽象方法是如何工作的。我们将基于以下结构开发新类:
Person{
protected
$firstName
;
$lastName
__construct(
,
){
$this
->firstName =
->lastName =
__toString(){
return
sprintf(
"%s, %s"
->lastName,
->firstName);
getSalary();
抽象类无法被实例化。换句话说,不允许创建一个抽象类的新实例,例如,下面的代码是不允许的:
$p
=
new
Person(
'Alice'
'theITroad'
);
抽象类可以包含属性,比如$firstname和$lastname等。
抽象类可以包含已经实现完成的方法,比如:__tostring()方法。
抽象类允许您声明一个部分功能已经实现了的类。而抽象方法则由子类来实现。
继承自抽象类的类被称为具体类,例如Employee类和Contractor类就是具体类。
require_once
'classes/person.php'
Employee
extends
Person {
private
$salary
) {
parent::__construct(
->salary =
getSalary() {
__toString() {
"Name: %s<br> Salary: $%0.2f"
parent::__toString(),
->salary);
下面代码演示了如何使用Employee类:
'classes/employee.php'
$e
Employee(
,3000);
echo
我们现在可以开发另一个具体类Contractor:
Contractor
$rate
$billableHours
->rate =
->billableHours =
->rate *
->billableHours;
"姓名:%s<br>薪水:$%0.2f"
->getSalary());
使用Contractor类的示例代码:
'classes/contractor.php'
$c
Contractor(
'MStech'
'Bill'
, 55, 170);
原文链接:https://codingdict.com/