php类的继承和调用和实例化

<?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);
?>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值