体验多态之美

       早在看《大话设计模式》第一章的时候,就对诸如Animal = New Cat ()这种用父类来引用之类的多态用法就不是很懂了,当初习惯的思维是Animal就一定要实例化一个Animal类,对于接口也同样!
      现在写到《大话设计模式》后面面向对象基础的时候,才算是把这个问题搞懂了。
      看来,要学好C#,首先应该打好面向对象的基础。上面说到的“面向对象基础”就是一个很好的入门!

      不多说了,先看看多态的例子吧:
下面是Animal类:

 

Animal父类

 

客户代码:

客户代码

 

客户窗体:

体验多态之美
     Cat和Dog都继承自Animal,但是它们的叫声均不相同,这就是所谓的“不同对象执行相同的动作,但要通过子类自己的代码来实现”。
     在使用多态的时候要注意,对象的声明必须是父类,而不是子类,实例化对象是子类,这才实现多态。多态的原理相当于当方法被调用时,无论对象是否被转换为其父类,都只有位于对象继承链最末端的方法实现被调用。也就是说,虚方法是按照其运行时而不是编译时类型进行动态绑定调用的。
   

     多态是面向对象的三大特征之一。它表示不同的对象可以执行相同的动作,但是要通过自己的代码实现。

     用到多态的时候,要注意:子类以父类的身份出现;在工作时候以自己的方式实现;子类以父类的身份出现时候,子类特有的方法和属性不可以使用。
     同时,为了使子类的实例完全接替来自父类的类成员,父类应该将该成员声明为虚拟。而子类通过Virtual关键字来实现父类的虚拟方法。

     本文的大部分内容均来自《大话设计模式》,谢谢程老师提供了这么好的学习资料!
     

你可能感兴趣的:(多态)