zoukankan      html  css  js  c++  java
  • Java面试题,Java三大特性之一——多态的理解

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

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

    封装、继承、多态      ↓

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

    多态的三个前提条件:

    1、继承关系

    2、方法的重写

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

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

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

    废话不多直接上图举例:

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

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

     

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

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

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

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

     

  • 相关阅读:
    Diango基础学习
    Python02-作业(购物车)
    使用spring boot + Thymeleaf实现web小页面
    Python-01作业(登录和三级菜单)
    Java反射机制
    Socket编程
    利用java的url实现小型的网页爬虫
    关于在spring boot里使用Thymeleaf模板的application.properties配置
    Spring
    Spring-bean的自动装配
  • 原文地址:https://www.cnblogs.com/eyesCentre/p/10697487.html
Copyright © 2011-2022 走看看