多态(运行多态)
概念:当父类引用指向子类实例,由于子类里面对父类的方法进行了重写,父类引用在调用该方法的时候表现出的不同状态。
条件:
1.必须发生在继承下
2.必须重写父类方法
3.父类引用调用该方法
如果一个方法需要一个父类参数,可以给一个子类对象。
//静态 //普通成员是属于对象的 //静态成员 //静态成员是属于类的 //关键字:static //self关键字:在类里面代表类 //在静态方法里面不能调用普通成员 //普通方法里面可以调用静态成员 /*class Fenbi { public $length;//粉笔的长度,定义成普通的成员。 public static $color;//粉笔的颜色,定义成静态的成员。static定义静态的关键字。 static function Show() { echo "粉笔颜色是:".self::$color;//self换成类名Fenbi也可以,self在类里面代表该该类,this在类里面代表该对象。 } function Xianshi() { echo "显示:".self::$color; } } $f = new Fenbi();//先造一个对象 $f->length;//用对象去调用普通成员 Fenbi::$color = "红色"; //Fenbi::show();//调用静态方法,不用 Fenbi::$color;//因为静态成员是属于类的,所以要使用类名调用静态成员 $f->Xianshi(); */
抽象:
//抽象 //抽象类:关键字abstract //特点:不能被实例化,只能被继承。 //目的:为了派生子类,控制子类 /*abstract class Dog { public $name; function Jiao() { echo "汪汪"; } } //$d = new Dog();//不能造出dog对象 class Jianmao extends Dog//金毛的类继承dog的类 { }*/
接口:
//接口 //极度抽象的类 //接口里面不能包含成员变量,只能包含成员方法。 //成员方法没有函数体 //接口关键字:interface //实现接口的类,必须实现接口里面的所有方法。 /*interface IUSB//接口名称一般是I(大写)开头 { function read();//读的方法 function write();//写的方法 } //鼠标的驱动类 class Mouse implements IUSB { function read() { echo "鼠标插入了"; } function write() { echo "给鼠标一个指令"; } } //键盘驱动类 class Jianpan implements IUSB { function read() { echo "键盘输入了内容"; } function write() { echo "给键盘一个指令"; } } $m = new Mouse(); $m->read(); $j = new Jianpan(); $j->read();