多态

一、多态就是指不同对象收到相同消息时,会产生不同行为。同一个类在不同的场合下表现出不同的行为特征.
     多态的作用:把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异
     如果子类方法添加了override,那么系统会去父类中寻找与当前重写方法相同签名的方法,如果发现没有添加可被重写的关键字那么就报错,如果有就可以通过重写实现多态。
     虚方法:提供一种默认实现。子类可以选择是否重写,如果不重写,那么就使用父类已经实现的方法,如果重写了,那么就会使用子类已经重写的方法
 
 
二、将子类对象赋值给父类对象,所得到对象是这样的一个对象:
    它是一个编译是为父类对象,但运行却是一个子类对象。具体特征如下:
   1.被声明为父类对象
   2.拥有父类属性
   3.占用子类的内存空间
   4.子类方法覆盖父类的方法时,此时对象调用的是子类的方法;否则,自动调用继承父类的方法.
   5.我们认为这个对象既不是父类对象,也不是子类对象。当我们用到它的方法时,我便把它看成子类对象;若用到它的属性时,我把它看成父类对象。它是一个占用父类属性,而使用子类方法的对象。至于到底是什么对象,我认为还是得根据声明来,它应算是父类对象,但拥有子类方法. 
 
三、 实现多态的思路 
     i. 先创建好父类,再创建子类
     ii. 在父类中创建需要被重写的虚方法或者抽象方法
     iii. 在子类中重写父类的虚方法或者抽象方法
     iv. 声明父类类型的变量,实例化子类对象---写出通用代码
     1. 声明父类变量,实例化子类对象
        Person per=new Student();
     2. 以父类做为方法的返回值类型,返回具体的子类对象---简单工厂(封装变化点)
     3. 父类做为参数,传入具体的子类对象
 
四、实现多态的主要手段:
  1.虚方法virtual
  2.抽象方法abstract
  3.接口
 
posted @ 2015-09-16 23:01  Chen_Weifeng  阅读(218)  评论(0编辑  收藏  举报