6:多态

什么是多态?

第一句话:一段代码,一个函数,一个类的多态性
第二句话:一段代码,一个函数,一个类的灵活性

  • 从生活中说:轿车,会开车的人都会开,人会开车,那么人可以开车,人猿会开车,那么人猿可以开车,如果说,轿车只能让人开,那是不是人猿就得创造一种猿车,专门供人猿开呢?这不是造成了资源的浪费吗?
  • 从程序中说:一个类,只负责输出字符串,那么我要是给你传一个对象的参数呢?你怎么办,你怎么给我显示这个对象,再写一个专门输出对象的类?那你的代码要写多少行?别人理解你的代码得耗费多少时间?这难道不是金钱的损失吗?
  • 多态这个东西,没有什么具体的语言能具体描述,他就是说一个东西的灵活性好不好,而且,面向对象(OOP)本身就是为了提高效率,一定程度上简化代码,达到复用的目的;

示例:

class Shoudiantong {
	public function ons(Glass $g){
		$g->display();
	}
}

class Glass {
	public function display(){}
}

class Hong extends Glass{
	public function display(){
		echo '红玻璃 <br/>';
	}
}

class Blue extends Glass{
	public function display(){
		echo '蓝玻璃 <br/>';
	}
}

class Tianpeng{
	public function display(){
		echo '天蓬元帅 <br/>';
	}
}

$shoudiantong = new Shoudiantong();

$hong = new Hong();

$blue = new Blue();

$tianpeng = new Tianpeng();

$shoudiantong->ons($hong);
$shoudiantong->ons($blue);

注释

  • 输出一句话,只有Glass类的子类才能被调用方法;

  • 子类是父类,正如男人是人,女人是人,金鱼是鱼,鲨鱼是鱼,千里马也是马;

  • 里氏代换:原能用父类的场合,都可以用子类来代替

  • PHP本身不进行参数类型检测,在PHP5.3以后,引入了对象类型的参数检测,仅仅是在参数为对象的时候,类型检测生效,普通的基本数据类型是不进行检测的;

  • 多态在弱类型的语言中(例如JavaSscript PHP Python)的存在感不是那么强烈,但是在强类型的语言中(例如Java CPP C# C)显示的表现就很强烈

  • 重在思想,不在语法;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值