//面向对象三大特性//继承 //概念:子类可以继承父类的一切 //方法重写:在子类里面对父类的方法进行重写 //特点:单继承:一个子类只能有一个父类,一个父类可以派生出多个子类 //override: 重写 //overload: 重载,编程多态 //parent::值名(); 放到那个需要调用父类的值名里面的(值),的子类里面! class Ren { public $name; function say() { echo $this->name."正在讲话!"; } } class China extends Ren { public $dizhi; function say() { parent::say(); //调用父类的say方法 echo "中国人说话"; } } class America extends Ren { function say() { echo "speak"; } } $c = new China(); $c->say(); $a = new America(); $a->say();
//面向对象三大特性//多态(运行多态) //概念:当父类引用指向子类实例,由于子类里面对父类的方法进行了重写,父类引用在调用该方法的时候表现出的不同状态。 //条件:1.必须发生在继承下 // 2.必须重写父类方法 // 3.父类引用调用改方法 //override: 重写:(前提:在继承的基础上,子类在获取了父类的结构以后,可以对父类中同名的方法进行“重构”)。方法的返回值,方法名,形参列表形同:权限修饰符不小于父类的同名方法;子类方法的异常类型不小于父类的;两个方法要同为{static}或同为非{static}。。 //overload: 重载,编程多态 “两同一不同”,“同一类”,同一个方法,不同的参数列表。注:方法的重载与方法的返回值无关,构造器是可以重载的。 //如果一个方法需要一个父类参数,可以给一个子类对象 //类:在PHP里不能用!但必须了解一下! public class Ren { public virtual string Speak() { return "人在说话"; } } public class China:Ren { public override string Speak() { return "中国人在说话"; } } public class America : Ren { public override string Speak() { return "美国人在说话"; } } //多态: Ren r = new Ren(); //造一个Ren类的引用指向Ren类的对象 Ren r1 = new America(); //父类引用指向子类实例 r1.Speak(); //表现出的不同,成为多态 //子类对象替父类例子 //怪兽吃人 public string Eat(Ren r) { return "人类真好吃"; } America a = new America(); Eat(a);
时间: 2024-11-07 13:02:19