多态的好处体现在:当一个函数的形式参数需要接受多个子类时,就可以将这些子类共同的父类充当形式参数,可以避免因所需形式参数不同而创建多个方法的情况。
比如:
存在父类:Animal
存在子类:Cat Dog Pig
存在方法:Eat
(方法功能为:传入一个动物输出该对象的食物)

正常情况下,就需要创建三个方法,三个方法的参数反别是Cat Dog Pig

然而,有了多态之后,就可以只定义一个方法,将方法参数设置为他们的父类Animal。如此,这个方法就可以同时接收Cat Dog Pig对象作为形参。这种使用方式我们称之为向上转型。即创建一个父类引用,将其指向子类对象。

多态的弊端在于:使用向上转型时,创建的类只能使用父类拥有的方法,不能使用子类中所特有的方法。为了解决这个问题,可以将创建的对象再通过强制转换,转换为对应子类。这种方式,我们称之为向下转型。

在使用多态的向上转型方式时,所创建的对象,只能调用父类中的变量,而无法调用子类中的变量;而再调用方法时,会优先调用子类的方法,当子列不存在该方法(未对该方法重写)时,才会去调用父类中的方法。

Java中多态的好处和弊端相关推荐

  1. Day11多态部分-6 【1.5 多态的好处和弊端】

    [1.5 多态的好处和弊端] [多态的好处] :提高了程序的扩展性 作用体现在方法的形参列表 被继承/被实现的类/接口 当做形参传递 可以接收任意子类的对象 [多态的弊端]:虽然提高了程序的扩展性 但 ...

  2. Java中多态的使用

    1.面向对象的三大特性:封装.继承.多态.从一定角度来看,封装和继承几乎都是为多态而准备的.这是我们最后一个概念,也是最重要的知识点. 2.多态的定义:指允许不同类的对象对同一消息做出响应.即同一消息 ...

  3. Java中 多态的理解

    ** Java中 多态的理解 ** 多态官方定义为: 所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指 ...

  4. 深入Java核心 Java中多态的实现机制(1)

    在疯狂java中,多态是这样解释的: 多态:相同类型的变量,调用同一个方法时,呈现出多中不同的行为特征, 这就是多态. 加上下面的解释:(多态四小类:强制的,重载的,参数的和包含的) 同时, 还用人这 ...

  5. java中多态_java之多态

    1.多态的概述:是面向对象的三大特性之一,封装.继承.多态. ①一个具体的对象有多种形态,老虎既属于猫科动物(因为子父类是相对的,所以猫科动物也可以看做子类),又属于哺乳动物,所以老虎既可以拥有猫科动 ...

  6. JAVA中多态的理解

    Java中多态的理解 JAVA中的多态可以简单的理解为一种事物的多种形态,当然多态是在继承的基础上有重写才存在. 标题如何理解一种事物的多种形态? 举个例子,拿人类.男人.女人来说.男人.女人.都分别 ...

  7. 什么是多态,JAVA 中多态的实现机制

    什么是多态,JAVA 中多态的实现机制 首先声明啊,这里的多态不是生物学和物理学上的多态性,这个是指编程语言中的多态. 官方说明: 多态(英语:polymorphism)指为不同数据类型的实体提供统一 ...

  8. java中多态的作用,多态的好处,以及为什么要用多态?

    看了这个,我终于知道了为什么要用多态了 看了大量的资料和视频之后,我终于搞清了多态的作用了,废话不多说,直接上干货! 多态的好处: 1.提高了代码的可维护性 2.提高了代码的扩展性 多态的作用: 可以 ...

  9. Java中多态、抽象类和接口

    1.final关键字是最终的意思,可以修饰类.方法和变量. final修饰类不能被继承.修饰方法不能被重写.修饰变量是常量 例如: final class Father{}//final修饰类将不能被 ...

最新文章

  1. Python基础总结(2)
  2. iconfont svg图标不能更改颜色的解决方法
  3. 进阶学习(1) Gradle 项目管理工具的使用
  4. C++模板的概念<>(泛型编程)
  5. pyspark randomSplit代码示例
  6. 计算机专业英语公开课教案,小学英语公开课教案,小学英语优质课教案?
  7. 字符串野指针 百练2681
  8. Microsoft SharePoint Server 2010 的新增功能
  9. android访问静态内部类,Java 内部类详解
  10. Android桌面组件开发之实时文件夹(Live_Folders)
  11. Java 通过Executors创建线程池的种类
  12. IIS7.5安全配置研究
  13. (转)细说JDK动态代理的实现原理
  14. 找到好东西,可以显示最忙碌的java线程的脚本
  15. 自定义控件:Flag标签
  16. 水下航行器简介及水下面临的挑战
  17. Springboot中@autowired和@resource注解的区别
  18. 石油远程《机械设计》第一次在线作业
  19. Fiddler+雷电模拟器APP抓包
  20. 表的列被set unused的机制

热门文章

  1. Linux加减程序编写,Makefile 入门(加减乘除实现)
  2. CV的顶级Python项目
  3. Web杀毒v3.3.1
  4. 如何绘制出简单又有创意的思维导图
  5. 李开复:今年参加了1400场视频会议,没有交到一个朋友 | MEET2021
  6. 爱奇艺Java实习一面凉经
  7. Android 获取Camera图像数据
  8. 次世代网游不能只是技术进步
  9. Google告诉你1英亩=?平方米
  10. Java阿尔法编程题目