//面向对象三大特性
//继承
//概念:子类可以继承父类的一切
//方法重写:在子类里面对父类的方法进行重写
//特点:单继承:一个子类只能有一个父类,一个父类可以派生出多个子类
//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);
原文:http://www.cnblogs.com/zc290987034/p/5998671.html