PHP面向对象 —— 24 抽象类

/*
抽象类的作用:

当接口用,当模板用
实现多态,生来就是当爸爸的
*/


// =代码部分1=

// =用abstract写一个飞行器制造术= //

abstract class FlyIdea {
	// 大力引擎
	public abstract function engine();
	
	// 平衡舵
	public abstract function balance();
	
	/*
	     注意:抽象方法中 不能有方法体
		 下面这样写是错误的
		 public abstract function balance() {
			 
		 }
		 报错如下:
		 Fatal error: Abstract function FlyIdea::balance() cannot contain body
	*/
}

/*
抽象类不能new 来实例化
$kongke = new FlyIdea();

报错如下:
Fatal error: Cannot instantiate abstract class FlyIdea
*/


// =用火箭解决发动机问题= //

abstract class Rocket extends FlyIdea {
	
	public function engine() {
		echo '点燃火药,失去平衡。<br >';
	}
}

class Fly extends Rocket {
	public function engine() {
		echo '用力一扔<br >';
	}
	
	public function balance() {
		echo '两个纸翼保持平衡~~~~~~';
	}
	
	public function start() {
		$this->engine();
		for($i=0;$i<10;$i++) {
			$this->balance();
			echo '平稳飞行<br >';
		}
	}
}


$apache = new Fly();
$apache->start();

/*
总结:

类前加 abstract 是抽象类
方法前加 abstract 是抽象方法

抽象类 不能 实例化
抽象方法 不能有 方法体

有抽象方法,则此类必是 抽象类
抽象类,内未必有抽象方法
*/


// =代码部分2=

// =Facebook 多国语言欢迎页面= //

abstract class Welcome {
	public abstract function wel();
}

class china extends Welcome {
	public function wel() {
		echo '你好,非死不可<br >';
	}
}

class english extends Welcome {
	public function wel() {
		echo 'hi,welcome<br >';
	}
}

class japan extends Welcome {
	public function wel() {
		echo '搜达斯奈<br >';
	}
}


$c = 'china'; //english //japan

$wel = new $c();
$wel->wel();

/*
以后新增了其他国家语言,
只要新增一个新的welcome类即可.
*/
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

烟敛寒林o

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值