php类和对象(二)
2024-10-21 11:52:58
面向对象第三大特性:多态
概念: 当父类引用指向子类实例的时候,由于子类对父类函数进行了重写,导致我们在使用该引用取调用相应方法时表现出的不同
条件: 1.必须有继承
2.子类必须对父类的方法进行重写
多态在弱类型语言中表现不明显,在强类型语言中表现比较明显,在php中不用考虑.
class Ren
{
public $name;
public $sex;
function say()
{
echo "hello";
}
}
class China extends Ren
{
function say()
{
echo "你好";
}
}
$r =new Ren();
$r1 =new China();
多态在强类型语言中可用父类引用指向子类的实例,php不用规定变量的类型,多态不明显.
函数重载:
1.方法名必须一样
2.函数里面参数个数不同
3.如果参数个数相同,类型不同
函数重载只在强类型语言中有,弱类型语言中没有
php是弱类型语言,php有可变参数的函数,且不用规定参数类型,不满足函数重载的条件.
function say()
{
echo "hello";
}
function say($a)
{
echo $a."hello";
}
function say($a,$b)
{
echo $a.$b."hello";
}
三个say()方法,随参数个数不同,调用的函数也不同.
__tostring()方法: 输出类的一些描述
function __tostring()
{
return "这个对象包含变量name和sex,一个say方法";
}
$r= new Ren();
echo $r; //输出return值
对象的克隆:
$r=new Ren(); $r->name="张三"; $r1 =clone $r; //克隆对象 var_dump($r1); //在克隆时,想要对克隆的新对象中添加一些特殊的东西,需要在Ren类中加入__clone方法 function __clone() { $this->name="李四"; //$this是复本(克隆之后的新对象) } echo $r->name; echo $r1->name; //输出:张三李四
最新文章
- 如何利用 Visual Studio 自定义项目或工程模板
- angular.extend()和 angular.copy()的区别
- 转JAVA2
- 零配置Socket TCP消息通讯服务容器EC
- VS .sln .csproj 文件的右键编译
- js中加密及设置cookie
- RSA加密(跨平台通用的)
- 我的Photoshop第一个作品
- [CODEVS1258]关路灯
- [实战]挖掘CSRF姿势
- 检查DISPLAY设置时Xlib出现No protocol specified错误
- Oozie时出现Exception in thread ";main"; java.lang.UnsupportedClassVersionError: com/mysql/jdbc/Driver : Unsupported major.minor version 52.0?
- Problem J
- Java面试题技术类
- html button 点击链接
- ASP.NET Web API Basic Identity 中的基本身份验证
- 利用DNSLOG获取看不到的信息(给盲注带上眼镜)
- springboot整合dubbox与zookeeper
- Scala:Object-Oriented Meets Functional
- [daily][archlinux] 本地字符乱码, 无法显示中文