zoukankan      html  css  js  c++  java
  • 《三》多态

    《三》多态的优势和应用场合

    1、什么是多态

    多态是同一个属性或行为,具有多种不同表现形式或形态。多态就是同一个类(接口),使用不同的实例而执行不同操作。

    2、使用多态的好处

    减少类中代码量,提高代码的可扩展性和可维护性,消除类型之间的耦合关系。

    3、多态存在的三个必要条件

    1. 必须是继承关系
    2. 子类重写父类方法
    3. 父类引用指向子类对象(向上转型)

    4、向上转型

    向上转型——子类转换为父类,自动类型转换

    语法:

    父类名 父类对象 = new 子类名();

    注意:

    • 向上转型不能使用子类特有的属性和方法,只能引用父类的属性和方法,但是子类重写父类的方法是有效的。
    • 向上转型时会优先使用子类中重写父类的方法
    • 向上转型的作用是减少重复代码,可以将父类作为参数,这样使代码变得简洁,也更好的体现了多态。

    5、向下转型

    向下转型——父类转换为子类

    向下转型就是指父类类型的对象转型为子类类型。也就是,声明的是子类类型,但引用的是父类类型的对象。

    因为向上转型后,父类不能引用子类特有的属性和方法,而使用向下转型后,就可以解决这个问题。

    语法:

    子类名 子类对象 = (子类名)父类对象;

    5.1 什么时候需要用到强制类型转换(向下转型)?

    当把子类对象赋给父类引用变量时,这个父类引用变量只能调用父类拥有的方法,不能调用子类特有的方法,即它实际引用的是子类对象。如果需要让这个父类引用变量调用它子类的特有的方法,就必须把它强制转换成子类类型。

    把父类实例转换成子类类型,则这个对象必须实际上是子类实例才行,所以向下转型之前一般先向上转型。

    在强制转换前使用instanceof运算符判断是否可以成功转换,返回一个布尔值

    6、instanceof运算符

    当在程序中执行向下转型操作时,如果父类对象不是子类对象的实例,就会发生ClassCastException(类型转换异常),所以在执行向下转型之前需要养成一个良好的习惯,就是判断父类对象是否为子类对象的实例。这个判断通常使用instanceof关键字来完成。可以使用instanceof关键字判断是否一个类实现了某个接口,也可以用它来判断一个实例对象是否属于一个类。

    语法:

    对象A instanceof 类B

    翻译就是:对象A是否为类B的实例,如果是返回true,否则为false

  • 相关阅读:
    struts1与struts2的差别
    UVA 1563
    项目开发相关规范
    互联网产品的測试
    虚拟机器人
    Caused by: java.lang.ClassNotFoundException: org.hibernate.annotations.common.reflection.MetadataPro
    HDU 1429--胜利大逃亡(续)【BFS && 状态压缩】
    自己写的php curl库实现整站克隆
    设置字符串中某些字符的特殊效果
    Objective-C学习笔记(二十二)——初始化方法init的重写与自己定义
  • 原文地址:https://www.cnblogs.com/beimingdaoren/p/13033716.html
Copyright © 2011-2022 走看看