• Java面试题,Java三大特性之一——多态的理解


    首先我们知道Java是一门面向对象的语言

    面向对象三大特性,封装继承多态

    封装、继承、多态      ↓

    无论是学习路线,还是众人的口语习惯,都是按照这个这样进行排序,这是有原因的。因为封装好了才能继承,封装和继承都是为多态做准备的。

    多态的三个前提条件:

    1、继承关系

    2、方法的重写

    3、向上转型(即父类引用指向子类对象)

    多态又分为两种情况,编译时多态运行时多态。先简单介绍一下这两种的区别

    编译时多态:对象引用本类实例

    废话不多直接上图举例:

    上图我们看到cat对象和animal对象都是引用的本类实例,也就是说,在方法启动前,编译已经确定了上面两个toString方法分别是谁调用的

    运行时多态:父类引用指向子类对象

     

    上图是父类引用指向子类对象,也就是向上转型。这里的toString方法我们知道返回的肯定是子类的方法的结果。这就是Java的运行时多态(接下来是重点,注意看了),Java从实例类开始寻找匹配的方法,如果没有匹配的方法,沿着继承关系逐渐往上匹配父类的方法

    上面的关系捋顺再说明多态的好处:

    我们看到Cat类是继承Animal类的,继承性提高了代码的可维护性

    向上转型,不同的实例类,产生不同的结果。如果我在定义一个Dog类也是一样,会输出Dog的toString。这就是代码的可拓展性

     

  • 相关阅读:
    AcWing 1027. 方格取数 dp
    AcWing 1014. 登山 dp
    acwing 482. 合唱队形 dp
    LeetCode 1463. 摘樱桃II dp
    LeetCode 100. 相同的树 树的遍历
    LeetCode 336. 回文对 哈希
    LeetCode 815. 公交路线 最短路 哈希
    算法问题实战策略 DARPA大挑战 二分
    算法问题实战策略 LUNCHBOX 贪心
    AcWing 1100. 抓住那头牛 BFS
  • 原文地址:https://www.cnblogs.com/eyesCentre/p/10697487.html
Copyright © 2020-2023  润新知