首页 > 热点 > > 正文

PHP面向对象-类和对象的定义(五) 环球速读

时间:2023-04-28 19:31:37 来源:腾讯云


(资料图)

5. 多态

多态是面向对象编程中的另一个重要特性,它可以让不同的对象使用相同的方法,但是表现出不同的行为。在PHP中,多态可以通过接口和抽象类来实现。

接口是一种定义规范的抽象类型,它只包含方法的声明,不包含实现。类可以实现一个或多个接口,必须实现接口中声明的所有方法。接口的语法如下:

interface 接口名 {  // 方法声明}

下面是一个接口的示例:

interface Shape {  public function getArea();  public function getPerimeter();}

在这个示例中,我们定义了一个名为Shape的接口,它包含了两个方法getArea()和getPerimeter(),分别用于计算形状的面积和周长。

抽象类是一种包含抽象方法的类,抽象方法只包含方法的声明,不包含实现。子类必须实现抽象类中的所有抽象方法,才能被实例化。抽象类的语法如下:

abstract class 抽象类名 {  // 抽象方法}

下面是一个抽象类的示例:

abstract class Animal {  protected $name; // 动物名称    public function __construct($name) {    $this->name = $name;  }    abstract public function makeSound(); // 抽象方法}

在这个示例中,我们定义了一个名为Animal的抽象类,它包含了一个属性$name和一个构造函数__construct(),以及一个抽象方法makeSound()。子类必须实现makeSound()方法,才能被实例化。

下面是一个多态的示例:

class Circle implements Shape {  private $radius; // 圆半径    public function __construct($radius) {    $this->radius = $radius;  }    public function getArea() {    return pi() * $this->radius * $this->radius;  }    public function getPerimeter() {    return 2 * pi() * $this->radius;  }}class Rectangle implements Shape {  private $width; // 矩形宽度  private $height; // 矩形高度    public function __construct($width, $height) {    $this->width = $width;    $this->height = $height;  }    public function getArea() {    return $this->width * $this->height;  }    public function getPerimeter() {    return 2 * ($this->width + $this->height);  }}function printShapeInfo(Shape $shape) {  echo "Area: " . $shape->getArea() . "
"; echo "Perimeter: " . $shape->getPerimeter() . "
";}$circle = new Circle(5);$rectangle = new Rectangle(3, 4);printShapeInfo($circle);printShapeInfo($rectangle);

在这个示例中,我们创建了一个Circle类和一个Rectangle类,它们都实现了Shape接口。我们还定义了一个函数printShapeInfo(),用于打印形状的面积和周长。在主程序中,我们创建了一个圆形和一个矩形,并分别调用了printShapeInfo()函数,输出了它们的面积和周长。

关键词:
x 广告
共同抗疫!郑州71岁党员志愿者每天爬6栋楼,提醒800多户居民做核酸

1月4日,郑州市新冠肺炎疫情防控指挥部办公室发布通告对部分区域实施管控措施。这是近半年来,新冠疫情第3次造访郑州。截止至1月10日24时,

安阳疫情最新消息|1月11日8时至12日8时安阳市新增本土确诊病例39例,累计123例

安阳疫情最新消息2022年1月11日8时至12日8时安阳市新型冠状病毒肺炎疫情最新情况1月11日8时至12日8时,全市新增本土确诊病例39例(汤阴县38

迅速高效!“河南抗疫互助通道”网上网下联动 获群众点赞

核酸检测24小时了还没查到结果,怎么办?现在高速下站口的管控政策到底是什么样子的?从洛阳老城区自驾走高速回郑州,收费站还劝返吗?苏八

信阳市疫情防控工作视频调度会召开 陈志伟出席会议

1月11日,市疫情防控工作视频调度会召开。代市长陈志伟出席会议并讲话。听取有关疫情防控重点工作和各县区(管理区、开发区)疫情防控工作

全国最新疫情消息:11日新增本土确诊病例166例 天津市今日启动第二轮全员核酸检测

11日0—24时,31个省(自治区、直辖市)和新疆生产建设兵团报告新增新冠肺炎本土确诊病例166例(河南118例,其中安阳市65例、许昌市41例、

1月12日天津市放假半天 开启第二轮全员核酸检测

1月12日,天津市人民政府发布重要通告,为做好天津市第二轮全员核酸检测工作,全市机关和企事业单位于1月12日(星期三)下午放假半天。广大

x 广告

Copyright ©  2015-2023 港澳评测网版权所有  备案号:京ICP备2023022245号-31   联系邮箱:435 226 40 @qq.com