zoukankan      html  css  js  c++  java
  • (java补充)关于多态

    多态

    1、为什么需要多态

    我们知道,封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类);它们的目的都是为了——代码重用。而多态则是为了实现另一个目的——接口重用!多态的作用,就是为了类在继承和派生的时候,保证使用“家谱”中任一类的实例的某一属性时的正确调用。

    通过多态可以减少类中代码量,可以提高代码的可扩展性和可维护性。继承是多态的基础,没有继承就没有多态。


    2、什么是多态

    通俗的理解:
    多态,一重写,二重载。用汉字来打个比方,比如“开”这个字,在不同的时候各有的意思,比如“开门”,“开窗”,甚至有“开车”,“开饭”等,具有相同名称但操作不同。
    多态性(polymorphisn)是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。

    多态:是具有表现多种形态的能力的特征,同一个实现接口,使用不同的实例而执行不同的操作。


    3、怎么用多态

    多态在使用中就是按照一句话:父类的对象指向子类的引用。

    1.继承的存在(继承是多态的基础,没有继承就没有多态)

    2.子类必须重写父类的方法(因为通过父类的引用只能调用父类里面定义的方法)

    3.通过父类的引用指向子类的对象。(子类到父类的类型转换)

    4.子类到父类的转换(向上转型)规则:

    1.将一个父类的引用指向一个子类的对象,称为向上转型,自动进行类型转换

    2.此时通过父类引用变量调用的方法是子类覆盖或继承父类的方法,不是父类的方法

    3.此时通过父类引用变量无法调用子类特有的方法。

    5.父类到子类的转换(向下转型)

    当向上转型发生后,将无法调用子类特有的方法,但是如果需要调用子类特有的方法时,可以通过把父类再转换成子类来实现。
    将一个指向子类对象的父类引用赋给一个子类的引用,称为向下转型,此时必须进行强制类型转换。

    6.Instanceof运算符

    语法:对象 instanceof 类或接口
    在进行引用类型转换时,首先通过instanceof运算符进行类型判断,然后进行相应的强制类型转换,这样可以有效地避免出现类型转换异常。
    资料:
    使用instanceof时,对象的类型必须和instanceiof的第二个参数所指定的类或接口在继承上有上下级的关系,否则会出现编译错误。
    Instanceof通常和强制类型转换结合使用
  • 相关阅读:
    HDU 3565 Bi-peak Number(数位DP)题解
    FJNU Fang G and his Friends(状压DP)题解
    newcoder 小A的柱状图(单调栈)题解
    CodeForces 518E Arthur and Questions(贪心 + 思维)题解
    装饰器来激活生成器
    迭代器(Iterator)和生成器(generator)浅析
    简单的获取网页样式元素(装饰器实现)
    多层装饰器的调用及执行顺序
    三角形的输出
    简单的用户登录(文件处理)
  • 原文地址:https://www.cnblogs.com/zhujianxipan/p/3146882.html
Copyright © 2011-2022 走看看