当前位置: 首页 > news >正文

Java笔试|面试 —— 对多态性的理解

谈谈对多态性的理解:

一个事物的多种形态(编译和运行时状态不一致性)

实现机制:通过继承、重写和向上转型(Object obj = new 子类())来实现。

1.广义上的理解

  • 子类对象的多态性,方法的重写;方法的重载;

    • 子类对象的多态性:编译时是父类对象,运行时是不确定的子类对象。(体现不一致性)

    • 方法的重写:继承父类后方法的重写,子父类方法不一致。(体现不一致性)

    • 方法的重载:方法的多态性(方法名一样,形参列表不一样,表现出不同形态,即多态性)(没有体现出状态不一致性)

2.狭义上的理解

  • Java中多态性主要指:子类对象的多态性

    • 格式:

      Object obj = new Xx(…); 父类的引用指向子类的对象 4
      Object obj = new String(“hell!”);
      Person per = new Man(); 声明是父类,实际new的子类对象

3.多态的优点

  • 减少了大量的重载的方法的定义;开闭原则( 对扩展开放,对修改关闭<无修改> )

    • 方法的主要使用场景

      应用于方法的形参()中,形参类型无法确定,写为父类,而实际调用方法时传递的是各种各样的子类。不需要再写各种重载的方法,直接写一个父类即可。(减少了大量的重载的方法的定义)
      -举例:public boolean equals(Object obj)

  • 多态无处不在(重点理解)

    • 例如开发中大量使用的抽象类和接口,其根本不能实例化,只能通过子类对象实例化,(体现为多态性)。如果子类对象不能赋值,抽象类和接口将没有任何意义。
    • 抽象类,接口就是基于多态而存在的,抽象类,接口要子类实例化。
    • 即如果没有多态,抽象类和接口将没有意义。

4.多态的使用(多态new的对象 与 不用多态new对象)

  • 多态new的对象

    • 虚拟方法调用。即“编译看左边,运行看右边”。
    • 屏蔽了子类特有的属性和方法,不能调用。
    • 一般写在形参上,因为没法确定子类是谁
  • 不用多态new对象

    • 方法里面,正常new对象即可
  • 注意:属性不存在多态性。

5.多态的逆过程

  • 向下转型,使用强转符()。
  • 为了避免出现强转时的ClassCastException,建议强转()之前使用instanceOf进行判断

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Perl 语言开发(七):哈希和关联数组
  • 【LeetCode】生命游戏
  • 江苏高防服务器都有哪些优势?
  • 关于ORACLE单例数据库中的logfile的切换、删除以及添加
  • 【操作系统】进程管理——信号量机制(个人笔记)
  • Kubernetes基于helm部署jenkins
  • Python入门 2024/7/8
  • 【RIP实验-熟悉基础配置】
  • Sorted Set 类型命令(命令语法、操作演示、命令返回值、时间复杂度、注意事项)
  • tomcat 安装和优化
  • 6月30日功能测试Day10
  • 【1】A-Frame整体介绍
  • hdu物联网硬件实验3 按键和中断
  • 解码技术债:AI代码助手与智能体的革新之道
  • PostgreSQL的使用
  • 【Leetcode】101. 对称二叉树
  • 【5+】跨webview多页面 触发事件(二)
  • 【跃迁之路】【733天】程序员高效学习方法论探索系列(实验阶段490-2019.2.23)...
  • iOS | NSProxy
  • Java IO学习笔记一
  • Laravel 中的一个后期静态绑定
  • Swoft 源码剖析 - 代码自动更新机制
  • 后端_ThinkPHP5
  • 看域名解析域名安全对SEO的影响
  • 前端路由实现-history
  • 我从编程教室毕业
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • 容器镜像
  • # 服务治理中间件详解:Spring Cloud与Dubbo
  • #define用法
  • (C11) 泛型表达式
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (Matalb回归预测)PSO-BP粒子群算法优化BP神经网络的多维回归预测
  • (Oracle)SQL优化基础(三):看懂执行计划顺序
  • (php伪随机数生成)[GWCTF 2019]枯燥的抽奖
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (编译到47%失败)to be deleted
  • (第一天)包装对象、作用域、创建对象
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (四)linux文件内容查看
  • (图文详解)小程序AppID申请以及在Hbuilderx中运行
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .NET 5种线程安全集合
  • .NET Core日志内容详解,详解不同日志级别的区别和有关日志记录的实用工具和第三方库详解与示例
  • .NET 跨平台图形库 SkiaSharp 基础应用
  • .NET 中选择合适的文件打开模式(CreateNew, Create, Open, OpenOrCreate, Truncate, Append)
  • .NetCore实践篇:分布式监控Zipkin持久化之殇
  • .vue文件怎么使用_vue调试工具vue-devtools的安装
  • /proc/stat文件详解(翻译)
  • ::前边啥也没有
  • @private @protected @public
  • @requestBody写与不写的情况