您当前的位置: 首页 > 学无止境 > 网站建设 网站首页网站建设
燕十八面向对象-抽象类
发布时间:2015-09-05 22:57:59编辑:雪饮阅读()
何为抽象类:
<?php
header("Content-type:text/html;charset=utf-8;");
/*
燕零七的构想:
飞机需要发动机和平衡舵
但由于当时可以使得该构想无法实现,还很抽象
因此我们把它做成一个抽象类
*/
abstract class flyidea{
//大力引擎,当时没有办法做,这个方法实现不了
//因此方法是抽象的
//抽象方法不能有方法体不要有后面的大括号,只要前面的小括号
public abstract function engine();
//平衡舵
public abstract function blance();
}
//到了明朝,万户用火箭解决了发动机的问题
//火箭飞行器
abstract class rocket extends flyidea{
//万户把engine方法实现,不再是抽象的了
public function engine(){
echo "点燃火药,失去平衡,爆炸了,虽死犹生!至少把发动机引擎实现了,只是因为缺少平衡舵才导致悲剧。。。";
}
//仅仅实现一个抽象方法,还有另外一个方法是抽象的,那么整个类仍旧是抽象的仍旧会报错
}
//到了现代,燕十八亲自制作飞行器
class fly extends rocket{
//十八哥觉得万户的引擎不好用,自己重新做了优良的引擎
public function engine(){
echo "借聂风哥的风神腿用力一踹<br/>";
}
//十八哥也实现了平衡舵
public function blance(){
echo "两个羽翼正在努力保持平衡中。。。<br/>";
}
//十八哥开始组装引擎与平衡舵并制作飞机起飞的控制器
public function start(){
$this->engine();//启动引擎
//用平衡舵保持平衡
for($i=0;$i<10;$i++){
$this->blance();
echo "平稳飞行<br/>";
}
}
}
$apache=new fly();
$apache->start();
/*
即便一个抽象类里面没有任何一个抽象方法,该抽象类仍然无法实例化,那么我们就需要继承下了
*/
echo "<hr/>";
abstract class car{
public function run(){
echo "滴滴";
}
}
class qq extends car{
}
$qq=new qq();
$qq->run();
?>
抽象类在团队合作开发中的重要意义:
<?php
header("Content-type:text/html;charset=utf-8;");
/*
抽象类的意义:
请看如下场景:
facebook多国语言欢迎页面
user登陆,有一个c字段,是其国家
当各国人登录时,看到各国语言的欢迎界面
我们可以用面向过程的来做
$c="china";
if($c=="china"){
echo "你好";
}
else if($c=="english"){
echo "hello";
}
else if($c=="japan"){
echo "艘大寺内";
}
这样的扩展性很差,要是有新语言就比较麻烦了。。。
用面向对象来做
各国开发者争执不下wel方法中到底echo中、日、韩?干脆判断一下?
*/
/*class welcome{
public function wel(){
echo "";
}
}*/
/*
总经理发话:都别争论了,你们各自开发各自的,welcome类谁也别动
*/
abstract class welcome{
abstract function wel();
}
class china extends welcome{
public function wel(){
echo "你好";
}
}
class english extends welcome{
public function wel(){
echo "hello";
}
}
class japan extends welcome{
public function wel(){
echo "艘大寺奶";
}
}
//首页的controller开发者
/*$wel=new welcome();
$wel->wel();*/
$c="china";
$wel=new $c();
$wel->wel();
/*如此以来只需要在首页开发者处调用对应国家的类即可,即便新增语言,让一个人去负责这个语言的开发
之后就直接通过首页来调用这个新语言所对应的类,所以面向对象有个特性:可插拔(很形象)
*/
?>
关键字词:抽象类,个人博客
下一篇:燕十八面向对象-接口概念