//2.继承
//1.特点:单继承,一个子类只能有一个父类;一个父类可以有多个子类
//1,父类
//2.子类
//子类可以继承父类的一切
//重写:oerride
// 重载:overload 多态
/*class ren { public $name; function say() { echo $tjis->name."正在说话"; } } /*1.class china { pulic $name; function say { } }*/ /*class china extends ren//2.给父类做扩展: { //子类对父类的方法进行重写 定义相同的名进行更改 function say() { parent::say();//把父类的内容调过来显示 echo "你好"; } function run() { echo $this->name."正在跑步"; } }*/ /*class America extends ren//3. { function say() { echo "hello"; } }*/ /*class china extends ren//继承人类中的一切 { } $c= new china; $c->say(); $c=new America; $c->say(); var_dump($c);*/
//overload 重载
//可以使类里面的某个方法产生多种效果,根据传入参数的不同可以执行不同的逻辑
//echo rand()随机数
//echo date()显示时间
//overload 重载 是多态的一种表现形式,叫编译多态
//3.多态
//概念:当父类引用指向子类实例的时候,由于子类对父类的方法进行了重写,父类引用在调用该方法的时候表现出的不同,成为多态;
//运行多态
//条件
//1.要有继承
//2.父类引用指向子类实例
$r= new ren();
//3.要有重写
//4.调重写的方法
用.net语言做
//父类
/* class Ren { public virtual string Say() { return "说话"; } } //子类 class China : Ren { public override string Say() { return "你好"; } } //子类 class America : Ren { public override string Say() { return "hello"; } }
//父类引用r指向子类实例
Ren r = new America();
MessageBox.Show(r.Say());
r = new China();
MessageBox.Show(r.Say());
//子类的对象可以代替父类的对象
America a = new America();
MessageBox.Show(Eat(a));
//怪兽吃人,需要一个人的参数
public string Eat(Ren r) { return "这个人味道不错!"; }