<?php
class ShopProduct{
public $numPages;
public $playLength;
public $title;
public $producerMainName;
public $producerFirstName;
public $price;
function __construct($title,$firstName,$mainName,$price,$numPages=0,$playLength=0){
$this->title =$title;
$this->producerFirstName =$firstName;
$this->producerMainName =$mainName;
$this->price =$price;
$this->numPages =$numPages;
$this->playLength =$playLength;
}
function getProducer(){
return "{$this->producerFirstName}/{$this->producerMainName}";
}
function getSummaryLine(){
$base =" {$this->title} ({$this->producerMainName},{$this->producerFirstName}) ";
return $base;
}
}
class CdProduct extends ShopProduct{
function getPlayLength(){
return $this->playLength;
}
function getSummaryLine(){
$base = "{$this->title}\n ({$this->producerMainName}{$this->producerFirstName})";
$base .= "总播放长度为:{$this->getPlayLength()}秒。";
return $base;
}
}
class BookProduct extends ShopProduct{
function getNumberOfPages(){
return $this->numPages;
}
function getSummaryLine(){
$base = "{$this->title}({$this->producerMainName},{$this->producerFirstName})";
$base .= "总页数为:{$this->getNumberOfPages()}页";
return $base;
}
}
class ShopProductWriter{
public function write($shopProduct){
if(!($shopProduct instanceof CdProduct) && !($shopProduct instanceof BookProduct)){
die("错误的种类");
}
$str="{$shopProduct->title}".$shopProduct->getProducer()."({$shopProduct->price})元\n";
echo $str;
}
}
$book=new BookProduct("php学习指导用书",'入门到精通','php',59.99,323,0);
echo $book->getSummaryLine();
$cd =new CdProduct("2021年周杰伦歌曲精选",'人气歌曲','周杰伦',88.33,0,301);
echo "<br>{$cd->getSummaryLine()}";
echo "<br>";
$write=new ShopProductWriter();
$write->write($cd);
echo "<br>";
$write->write($book);
?>
php类的继承和调用和实例化
最新推荐文章于 2021-12-19 14:09:07 发布