PHP面向对象抽象类笔记
/*
抽象类:无法实例化
类前加 abstract 此类就成为抽象类,无法实例化
方法前加 abstract 是抽象方法
抽象类 不能 实例化
抽象方法 不能有 方法体
有抽象方法,则此类必是 抽象类
抽象类,内未必有抽象方法
但是---即便全是具体方法,但类是抽象化,也是不能实例化
抽象类的意义
请看如下场景:
Facebook 多国语言欢迎页面
user 登录,有一个 c 字段,是其国家
当各国人登录时,看到各国语言的欢迎界面
我们可以用面向过程来做
if($c=='china') {
echo '你好,facebook';
} else if($c=='japan') {
echo '亚麻跌';
} else if($c=='english') {
echo 'hello,facebook';
}
反思:当fackbook进入印度市场时,需要增加else if ,扩展性很差
*/
$c='china';
if($c=='china') {
echo '你好,facebook';
} else if($c=='japan') {
echo '亚麻跌';
} else if($c=='english') {
echo 'hello,facebook';
}
echo '<hr />';
/*=====使用面向对象实现=====*/
abstract class welcome {
public abstract function wel();
}
class china extends welcome {
public function wel(){
echo '你好,facebook!!';
}
}
class japan extends welcome {
public function wel() {
echo '亚麻跌';
}
}
class english extends welcome {
public function wel() {
echo 'HEllO';
}
}
$human='japan';
$w=new $human();
echo $w->wel();
/*==以上代码所示,以后要是新增一个国家语言,父类就不用
改动了,值需要继承一个相类国家语言的子类就可以了==
所以有些面向对象的介绍中,说面向对象的一个特点:可插拔特性
*/
Dcr163的博客
http://dcr163.cn/38.html(转载时请注明本文出处及文章链接)