Correcting teacher:天蓬老师
Correction status:qualified
Teacher's comments:这些个类中使用的关键字, 是很重要的, 你可以根据关键字来整理所学过的知识点
<?php
//定义抽象类,关键字abstract
abstract class Shape {
public $width ;
public $heigth ;
//调用length1方法,初始化变量
function length1($width,$heigth){
$this->width = $width;
$this->heigth = $heigth;
}
abstract public function area();
}
class Rectangle extends Shape{
//继承Shape,自动获得属性$width,$heigth,方法length1()
//c重写area方法
function area (){
//返回面积
return (($this->width * $this->heigth)/2);
}
}
//创建rea实例
$rec = new Rectangle;
//给属性赋值
$rec->length1(20,30);
echo $rec->width."<br>";
echo $rec->heigth."<br>";
//输出rec面积
echo $rec->area();
<?php
//定义接口,关键字interface
interface Shape {
function area();
function perimeter();
}
//实现Shape,
class Rectangle implements Shape{
public $width;
public $heigth;
function length1($width,$heigth){
$this->width = $width;
$this->heigth = $heigth;
}
//重写area方法
function area (){
//返回面积
echo "长方形面积:".($this->width * $this->heigth)/2 . "<br>";
}
//重写perimeter方法
function perimeter(){
//返回周长
echo "长方形周长:".(($this->width + $this->heigth) * 2). "<br>";
}
}
//实现Shape,
class Circle implements Shape{
public $radius ;
//重写area方法
function area (){
//返回面积
echo "圆的面积:".($this->radius) **2 * M_PI . "<br>";
}
//重写perimeter方法
function perimeter(){
//返回周长
echo "圆的周长:". ($this->radius) *2 * M_PI . "<br>";
}
}
//判断对象类型,如果是Shape,执行对应的方法,实现多态
function change($obj){
if($obj instanceof Shape){
$obj->area();
$obj->perimeter();
}else{
echo "传入的参数不是一个正确的Shape对象";
}
}
//创建Rectangle实例
$rec = new Rectangle;
//给属性赋值
$rec->length1(20,30);
//创建Circle 对象
$cir = new Circle;
$cir->radius = 5 ;
//调用change方法,实现多态
change($rec);
change($cir);