1、继承与多态接下来为大家介绍多态(polymorphism) 。在面向对象编程当中呢,多态是非常重要的特性之一。当几个子类继承同一个父类的时候,通过覆盖,子类们可以展现不同的特性。继承与多态就像生物界当中的遗传和变异一样,继承使子类与父类保持着诸多的联系和相似性,而多态呢则使继承自同一个父类的子类实现个体的差异化,当然这一个差异化也是有限的,并不是跨类的。比如说熊猫的父亲不可能是一只鸭子。来看一个具体的例子,比如说我们现在有一个父类叫 Pet (宠物),这个 Pet 类本身也是非常地简单,它有一个自己的方法 action,action 呢直接追踪出一句字符串“do something ”。然后我
2、们建立 Pet 类的 3 个子类,它们都将用自己的方法来覆盖这个父类的方法action。第一个呢,我们建一个 Dog 类(小狗) ,它继承自 Pet,同时他要覆盖掉 action 这个方法,让小狗输出“汪汪叫” 。接着建立 Cat 类(小猫) ,让它输出“吃小鱼” 。我们再来建立 Pig 类(小猪) ,让它输出“呼呼睡” 。现在呢,我们有了一个父类 Pet,同时呢,它又有 3 个子类 Cat,Dog,Pig 。我们现在来把它们实例化。大家可以看到在输出面板上输出了“吃小鱼” “汪汪叫” “呼呼睡” 。有人会问,如果我们分别定义 Cat,Dog,Pig 这 3 个类,那不是一样可以实现同样的效果吗?那现在呢,这 3 个类都继承自 Pet 类有什么好处呢。我们现在来进一步扩展一下代码,比如说,我在 Pet 类中声明了一个公共变量 master(主人) ,同时为它赋值“Horidream”,保存。现在我们看看 Cat 的主人是谁,大家可以看到,它已经可以直接追踪出小猫的主人是谁了。同样,通过 trace(实例名.master) 。Dog 的主人,Pig 的主人都已经可以看到了。也就是说通过对父类的一些修饰,本身就扩展了我们这 3 个子类所能承载的信息。