码迷,mamicode.com
首页 > 其他好文 > 详细

面向对象-特性之多态

时间:2018-07-22 23:35:55      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:instance   重写   实参   class   如何   条件   bsp   隐藏   lang   

多态
    1.概念:生活中的多态
              同一种事物,由于条件不同,则产生不同的结果,事物的多种表现形态
              程序中多态
              同一个引用类型,使用不同的实例,执行不同的操作
                         多态发生在继承关系中
    2.使用

            父类的引用 子类的实现         例:使用多态进行实例化

              Pet pet=new Dog();
              Pet pet=new Penguin();
              Pet pet=new Cat();
 
 3.多态实现的条件
      1)类与类之间存在继承关系
      2)类与接口之间存在实现关系(之后章节)
   4.多态实现的步骤

      1)编写父类
      2)编写子类,一定要有子类重写父类的方法
      3)使用时,就可以使用父类的引用类型,子类的实例!!使用多态进行实例化
   5.多态实现的方式
      1)Pet pet=new Dog();
      2)使用父类作为方法的形参实现多态,调用具体方法传入实参作为子类的实例
      3)使用父类作为方法的返回值实现多态,定义方法的返回值为父类,调用方法的返回值为子类的实例
   6.优点:程序的可扩展性
     缺点:使用多态进行实例化,实例化的对象只能调用子类重写父类的方法,子类特有的方法我们无法调用
           如何解决弊端?
          1.向上类型(自动类型转换)
             Pet pet=new Dog();
            好处:隐藏子类型,提供代码的可扩展型
            弊端:只能调用子类重写父类的方法,子类特有的方法我们无法调用
          2.向下类型(强制类型转换)
             Dog dog=(Dog)pet;
            dog.catchFlyDisc();

             好处:能调用子类特有方法
             弊端:向下类型有风险,容易发生异常
             java.lang.ClassCastException(类型转换异常)
             解决方法:使用前进行判断,判断一个对象是否匹配另一个对象类型
                         (引用instanceof 语法:对象 instanceof 类型(类名))

 

面向对象-特性之多态

标签:instance   重写   实参   class   如何   条件   bsp   隐藏   lang   

原文地址:https://www.cnblogs.com/zhang-xy/p/9351725.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!