PHP面向对象三大特性③



今天学习了面向对象的第三个特性:多态

多态的概念:当父类引用指向子类实例的时候,由于子类对父类函数进行了重写,导致了我们在使用该引用去调用相应的方法表现出的不同

发生多态的条件:1.必须存在继承关系

2.必须对子类的函数进行重写

class Ren
{
    public $name;
    public $sex;

    function Say()
    {
        echo "hello";
    }
    function __tostring()
    {
        return "这个对象包含变量name和sex,一Say 方法";
    }
    function __clone() //对象克隆的时候自动执行
    {
        $this->name="李四";//$this 指复本(克隆出来的新对象)
    }
}
class China extends Ren
{
    function Say()
    {
        echo "你好";
    }

}

另一个知识点:

函数重载 【了解,PHP中不存在,在强类型语言中比较重要】

重载条件:1.函数名必须相同

2.函数参数个数不一样,如果个数相同,类型不同才能执行

function test ()      //不定义参数执行此函数
{
   echo "hello";
}
function test ($eg)      //定义一个参数执行此函数
{
   echo "hello world";
}
function test ($eg,$eg1,....)   //定义一个或多个执行此函数
{
   echo "hello world everyday";
}


php为何不存在函数重载?

1.PHP是弱类型语言

2.PHP有可变变量的函数



对象的克隆:用clone关键字

$r=new Ren();
$r->name="张三";
$r1=clone $r;
echo $r1->name;   //显示李四
echo $r->name;     //显示张三
时间: 2024-11-14 16:31:09

PHP面向对象三大特性③的相关文章

JAVA基础——面向对象三大特性:封装、继承、多态

JAVA面向对象三大特性详解 一.封装 1.概念: 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问. 2.好处: 只能通过规定的方法访问数据.     隐藏类的实例细节,方便修改和实现. 3.封装的实现步骤 需要注意:对封装的属性不一定要通过get/set方法,其他方法也可以对封装的属性进行操作.当然最好使用get/set方法,比较标准. A.访问修饰符 从表格可以看出从上到下封装性越来越差. B.this关键字 1.this关键字代表当前

面向对象三大特性五大原则 + 低耦合高内聚

面向对象三大特性五大原则 + 低耦合高内聚 面向对象的三大特性是"封装."多态"."继承",五大原则是"单一职责原则"."开放封闭原则"."里氏替换原则"."依赖倒置原则"."接口分离原则". 什么是面向对象 面向对象(Object Oriented,OO)是软件开发方法.面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统.交互式界面.应用结

C#面向对象三大特性

C#面向对象三大特性 面向对象的三个基本特征是:封装.继承.多态. 封装:隐藏内部功能的具体实现,只保留和外部交流数据的借口.就好比电视机,用一个外壳把内部零部件及控制电路封装起来,只提供按钮或者遥控器接口供人使用.封装可以隐藏实现细节,使得代码模块化.封装成类或结构:类和结构实际上是创建对象的模板,每个对象都包含数据,并提供了处理和访问数据的方法.(1)类定义了每个类对象(实例)可以包含什么数据和功能.举例来说,如果一个类表示客户,我们就可以定义字段customerId,name和addres

面向对象三大特性之二--【继承】

PHP中,一个类只能有一个父类,所谓继承就是去扩展父类,在设计类的时候,如果有两个或多个类有相同或者共用的部分,就将相同部分提取出来放到一个父类里面. 子类只能继承父类的公共属性和公共方法,如果父类的属性和方法有private修饰封装的话,子类是不能访问的(包括类的内部和外部),当然父类的对象也不能在外部访问,但如果是protected修饰的成员属性和方法,子类的类的内部是可以访问的($this),但子类的对象不能在外部访问. 继承的核心是扩展父类的方法,扩展方法包括两种,一种是添加父类中没有的

(1) 深入理解Java面向对象三大特性 封装 继承 多态

转眼已经工作快6年了,最开始做了2年J2EE:然后整了2年的数据仓库,主要是Cognos的报表开发:现在从事4G LTE核心网的开发,用的语言任然是Java,但写代码的机会不多,基本都是看代码找BUG,偶尔做点new feature也是在比较成熟的框架上复制.粘贴.修改,大部分时间还是在理解业务,钱多.事少.离家近,当时来这家公司图的是后面2点,2年过去了,英文水平有所提升,对敏捷开放也有一定的了解,但技术方面明显退步了或者说没有进步吧,本来以前也不怎么好,因为工作上用不到,自己也没怎么学习,所

[黑马程序员]Objective-C 面向对象三大特性之继承

基本概念 程序的世界和人类的“对象”世界在思想上是没有设么区别的,富二代继承了父母,自然就拥有了父母拥有的所有资源,子类继承了父类同样就拥有了父类所有的方法和属性(成员变量). 比如我们前文(Objective-C 面向对象三大特性之多态)中提到的Animal和Dog类: #import <Foundation/Foundation.h> @interface Animal : NSObject -(void) eat; @end @implementation Animal -(void)

面向对象编程(十四)——面向对象三大特性之多态②

面向对象最核心的机制——动态绑定,也叫多态. 通过下面的例子理解动态绑定,即多态 1 package javastudy.summary; 2 3 class Animal { 4 /** 5 * 声明一个私有的成员变量name. 6 */ 7 private String name; 8 9 /** 10 * 在Animal类自定义的构造方法 11 * @param name 12 */ 13 Animal(String name) { 14 this.name = name; 15 } 16

JavaScript基础--面向对象三大特性(八):继承封装多态

一.构造函数基本用法:function 类名(参数列表){属性=参数值} 1 function Person(name,age){ 2 this.name = name; 3 this.age = age; 4 } 5 6 //创建Person对象的时候,可以直接给名字和年龄 7 var p1 = new Person('abc',80); 8 window.alert(p1.name); 9 var p2 = new Person('hello',9); 10 window.alert(p2.

面向对象三大特性--封装

//面向对象三大特性//1.封装//目的:让类更加安全,不让外接直接访问类里边的成员变量/*class Ren { private $Name; private $Age; private $Sex; }*/ /*function __construct($s) { $this->Name = $s; } function Say() { echo $this->Name."正在说话!";} function __destruct() { echo "该对象销毁了

[.net 面向对象编程基础] (11) 面向对象三大特性——封装

[.net 面向对象编程基础] (11) 面向对象三大特性——封装 我们的课题是面向对象编程,前面主要介绍了面向对象的基础知识,而从这里开始才是面向对象的核心部分,即 面向对象的三大特性:封装.继承.多态. 1.封装概念 封装:每个对象都包含有它能进行操作的所有信息,这个特性称为封装.这样的方法包含在类中,通过类的实例来实现. 2.封装的优点 A.良好的封装能够减少耦合(比如实现界面和逻辑分离) B.可以让类对外接口不变,内部可以实现自由的修改 C.类具有清晰的对外接口,使用者只需调用,无需关心