栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

理解向上转型,动态绑定和多态

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

理解向上转型,动态绑定和多态

目录

1.向上转型

1.概念:

2.代码示例:

2.动态绑定

3.方法重写

4.理解多态

5.一个"坑"


1.向上转型

1.概念:

        向上转型:父类引用指向一个子类的实例,这种写法称为向上转型.

2.代码示例:

向上转型发生的时机有以下三种:

        直接赋值

        方法传参

        方法返回

直接赋值的写法:

方法传参的写法:

        

方法返回的写法:

2.动态绑定

        当父类和子类中出现了同名的方法的时候,我们去调用这个方法会出现什么样的现场呢?直接上代码:

 我们可以发现,虽然 animal 和 cat 都是 Animal 的类型引用,但是 animal 指向的是 Anima 类型的实例,而 cat 指向的是 Cat 类型的实例;在针对 animal 和 cat 分别调用eat方法之后,会发现前者调用了父类的eat方法,而后者调用了子类的eat方法;

   因此,在java中,调用了某个类的方法,究竟是执行了那段代码(是父类方法的代码还是子类方法的代码),要看这个引用指向的是父类对象还是子类对象,而这个过程是程序运行时决定的(而不是编译期),因此称为动态绑定.

3.方法重写

针对上图的eat方法来说:子类实现了父类的同名方法,并且参数的类型以及参数的个数完全相同,这种情况称为方法重写(Override)

注意事项:

        1.区分好重写和重载(重载:方法名称相同,参数类型和参数个数不同)

        2.普通方法可以重写,但静态方法(被static修饰的方法)不能重写

        3.重写中子类的方法的访问权限不能低于父类的方法访问权限

        (访问权限:public>protected>default>private)

        4.重写的方法返回值的类型不一定和父类的方法相同(但最好写成相同的)

4.理解多态

        多态的含义:一个引用,能表现出多种不同的形态

        多态的条件:

                1.发生向上转型

                2.父类跟子类具有同名的覆盖方法

                3.通过父类引用调用这个重写的方法

        多态的优点:

                1.类调用者对类的使用成本进一步降低.

                2.降低代码的"圈复杂度"

                3.可扩展能力强

 当类的调用者在编写 drawMap 这个方法的时候, 参数类型为 Shape (父类), 此时在该方法内部并不知道, 也不关注当 前的 shape 引用指向的是哪个类型(哪个子类)的实例. 此时 shape 这个引用调用 draw 方法可能会有多种不同的表现 (和 shape 对应的实例相关), 这种行为就称为 多态.

5.一个"坑"

        在构造方法中调用重写的方法也会造成触发动态绑定,但最好不要这做,会产生难以发现的问题.

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/832245.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号