当前位置: 首页 > 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进行判断
http://www.lryc.cn/news/398655.html

相关文章:

  • 从RL的专业角度解惑 instruct GPT的目标函数
  • location匹配的优先级和重定向
  • 观察矩阵(View Matrix)、投影矩阵(Projection Matrix)、视口矩阵(Window Matrix)及VPM矩阵及它们之间的关系
  • 谷粒商城学习笔记-19-快速开发-逆向生成所有微服务基本CRUD代码
  • 时序预测 | Matlab实现TCN-Transformer的时间序列预测
  • 没想到MySQL 9.0这么拉胯
  • 开源 Wiki 系统 InfoSphere 2024.01.1 发布
  • 1.Introduction to Spring Web MVC framework
  • Onnx 1-深度学习-概述1
  • 网络基础——udp协议
  • 分布式锁理解
  • Android Gradle 开发与应用 (十): Gradle 脚本最佳实践
  • c#获取本机的MAC地址(附源码)
  • sqlmap使用之-post注入、head注入(ua、cookie、referer)
  • XSS: 原理 反射型实例[入门]
  • Idea新增Module报错:sdk ‘1.8‘ type ‘JavaSDK‘ is not registered in ProjectJdkTable
  • 基于RHCE基础搭建简单服务
  • 威纶通触摸屏软件离线仿真时出现报错8000端口占用或服务器断线
  • CAS详解
  • 【笔记】虚拟机中的主从数据库连接实体数据库成功后的从数据库不同步问题解决方法2
  • 【每日一练】python类和对象现实举例详细讲解
  • 【学习css1】flex布局-页面footer部分保持在网页底部
  • Java中创建线程的几种方式
  • [A-04] ARMv8/ARMv9-Cache的相关策略
  • 【笔试常见编程题06】最近公共祖先、求最大连续bit数、二进制插入、查找组成一个偶数最接近的两个素数
  • 【工具分享】Gophish——网络钓鱼框架
  • “职业三大底层逻辑“是啥呢?
  • 飞睿智能无线高速uwb安全数据传输模块,低功耗、抗干扰超宽带uwb芯片传输速度技术新突破
  • 手把手教你从微信中取出聊天表情图片,以动态表情保存为gif为例
  • 【深度学习】图形模型基础(5):线性回归模型第三部分:线性回归模型拟合