Java基础---如何理解Java中的多态

news2024/11/18 21:26:02

目录

所谓多态

方法的重载与重写

重载和重写的区别


  • 所谓多态

  • 多态的概念比较简单,就是同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果
  • 如果按照这个概念来定义的话,那么多态应该是一种运行期的状态
  • 为了实现运行期的多态,或者说是动态绑定,需要满足三个条件:
    • 有类继承或者接口实现
    • 子类要重写父类的方法
    • 父类的引用指向子类的对象
  • 简单来一段代码解释下:

  • 这样,就实现了多态,同样是Parent类的实例,p.call调用的是Son类的实现、p1.call调用的是Daughter的实现
  • 那有人说,你自己定义的时候不就已经知道p是son,p1是Daughter了么
  • 但是,有些时候你用到的对象并不都是自己声明的
  • 比如Spring中的IOC出来的对象,你在使用的时候就不知道他是谁,或者说你可以不用关心他是谁
  • 根据具体情况而定
  • 前面说多态是一种运行期的概念
  • 还有一种说法,包括维基百科也说明,认为多态还分为动态多态和静态多态
  • 一般认为Java中的函数重载是一种静态多态,因为他需要在编译期决定具体调用哪个方法
  • 关于这一点,不同的人有不同的见解,建议在面试中如果被问到,可以这样回答:
  • “我认为,多态应该是一种运行期特性,Java中的重写是多态的体现;不过也有人提出重载是一种静态多态的想法,这个问题在StackOverflow等网站上有很多人讨论,但是并没有什么定论;我更加倾向于重载不是多态”
  • 这样沟通,既能体现出你了解的多,又能表现出你有自己的思维,不是那种别人说什么就是什么的
  • 方法的重载与重写

  • 重载是就是函数或者方法有同样的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者方法
  • 返回值不同,但是方法名和参数列表都相同的两个方法,不是重载
  • 重写指的是在Java的子类与父类中有两个名称、参数列表都相同的方法的情况
  • 由于他们具有相同的方法签名,所以子类中的新方法将覆盖父类中原有的方法
  • 重载和重写的区别

  • 1-重载是一个编译期概念、重写是一个运行期间概念
  • 2-重载遵循所谓“编译期绑定”,即在编译时根据参数变量的类型判断应该调用哪个方法
  • 3-重写遵循所谓“运行期绑定”,即在运行的时候,根据引用变量所指向的实际对象的类型来调用方法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/706761.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VScode 配置Orbslam debug调试环境(ubuntu18.04)

如果没有安装VScode的话,可以去点击官网下载 如果已经安装了VScode,可以直接把ORBSLAM的工程文件夹拖到VScode中,系统会提示是否添加C/C编译工具,直接安装即可,安装过程中也可以安装一下cmake 将ORBSLAM的工程文件夹拖…

obs编译

源码地址: GitHub - obsproject/obs-studio: OBS Studio - Free and open source software for live streaming and screen recording windows 编译: Build Instructions For Windows obsproject/obs-studio Wiki GitHub https://www.cnblogs.co…

app自动化测试(Android)--App 控件定位

客户端的页面通过 XML 来实现 UI 的布局,页面的 UI 布局作为一个树形结构,而树叶被定义为节点。这里的节点也就对应了要定位的元素,节点的上级节点,定义了元素的布局结构。在 XML 布局中可以使用 XPath 进行节点的定位。 App的布…

pytorch 迁移训练自己的数据集

1、pytorch 基础训练 上一节为基础 视频与AI,与进程交互(二) pytorch 极简训练自己的数据集并识别 接着上面一节,我们开始使用迁移学习,训练自己的数据集和保存网络,加载网络并识别。 2、 pytorch加载resnet18 RetNet网络的基础…

Vscode platformio Arduino开发STM32,点灯+串口调试

1.工具 USB-TTL(非常便宜,几块钱)STM32F103C8T6(几块钱) 2.引脚连线 USB-TTLSTM32TXPA10RXPA9VCC3.3VGNDGND 注意事项: 跳线帽位置:BOOT0接高电平(1),BOOT1接低电平(0)每次上传程序前需要按一下复位键(之后,跳线帽…

互联网编程之基于 TCP 的单线程文件收发程序(CS架构)

目录 需求 服务端实现 客户端实现 测试 需求 可试着根据java编程课所学到的java socket编程技术,尝试编写一个基于 TCP 的单线程文件收发程序,需满足: 服务端程序预先定义好需要发送的文件并等待客户端的连接。 客户端连接成功后&…

ranger配置hive出錯:Unable to connect repository with given config for hive

ranger配置hive出錯:Unable to connect repository with given config for hive 我一開始我以為是我重啟了ranger-admin導致ranger有點問題,後面排查之後發現是我之前把hiveserver2關閉了,所以只需要重新開啟hiveserver2即可

开源 sysgrok — 用于分析、理解和优化系统的人工智能助手

作者:Sean Heelan 在这篇文章中,我将介绍 sysgrok,这是一个研究原型,我们正在研究大型语言模型 (LLM)(例如 OpenAI 的 GPT 模型)如何应用于性能优化、根本原因分析和系统工程领域的问题。 你可以在 GitHub …

一个真实的社会工程学攻击

社会工程学实例 不同于以往通过心理诱骗暗示或欺诈手段社会工程学举例,本次为大家介绍一种特殊的结合刑侦推理及利用技术手段实现的社会工程学实例,可以把它归类为特殊层面的信息收集手段——通过照片确定发拍照人所在的位置,这种社工手段严格…

ExtJS4 相关

2. 程序架构 2.1 目录结构 推荐下面这种目录结构(非强制,如果你足够懂和自信) - appname- app- namespace- Class1.js- Class2.js- ...- extjs- resources- css- images- ...- app.js- index.html appname 包含所有程序代码,是根目录 app 包含所有类&…

MySQL基础篇(day03,复习自用)

MySQL第三天 排序与分页内容练习 多表查询内容练习 排序与分页 内容 #第五章 排序与分页#1.排序 #如果没有使用排序操作,默认情况下查询返回的数据是按照添加数据的顺序显示的。 SELECT * FROM employees;#1.1基本使用 #使用 ORDER BY 对查询到的数据进行排序操作 …

JSON轻量级数据交换格式

文章目录 前言前后端数据交换格式比较JavaScript自定义对象 前言 JSON全名 :JavaScriptObjectNoation JSON在后端和前端中起着非常重要的作用。 在前端,JSON被用作一种数据格式,用于从服务器获取数据并将其展示在网页上; 前端开…

[SpringBoot]单点登录

关于单点登录 单点登录的基本实现思想: 当客户端提交登录请求时,服务器端在验证登录成功后,将生成此用户对应的JWT数据,并响应到客户端 客户端在后续的访问中,将自行携带JWT数据发起请求,通常&#xff0c…

LeetCode 2501 数组中最长的方波 Java

方法一,哈希表枚举 构造哈希集合,记录出现过的数字枚举遍历 import java.util.HashSet; import java.util.Set;class Solution {public int longestSquareStreak(int[] nums) {//构造哈希表集合,记录出现过的数字,转long型&…

kafka入门,Leader 和 Follower 故障处理细节(十四)

Leader 和 Follower 故障处理细节 LEO:每个腹部最后一个offset,leo其实就是最新的offset1 HW:所有副本中最小的LEO Follower故障处理细节 (1)Follower发生故障会被临时提出ISR (2) 这个期间leader和Follower积蓄接收数据 (3) 待该Follower恢复后&#…

嵌入式基础知识

1.嵌入式系统的定义 以应用为中心,以计算技术为基础软硬件可裁剪,适应系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机技术。 主要由嵌入式微控制器、外围硬件设备、嵌入式操作系统以及用户应用软件等部分分组成。 具有“嵌入式” 、“专用…

CSS 内容盒子与边框盒子

这章比较重要,会不断更新❗ 文章目录 👇内容盒子开发者工具的使用border 边框padding 内边距margin 外边距盒子整体尺寸元素默认样式与CSS重置元素分类块级标记行级标记行内块标记 display样式内容溢出裁剪掉溢出部分滚动条 圆角边框 border-radius ✌边…

【MySQL数据库】MMM高可用架构

目录 一 、MMM简介1.1MMM(Master-Master replication manager for MvSQL,MySQL主主复制管理器)1.2关于 MMM 高可用架构的说明如下 二、搭建mysql MMM架构2.1实验环境2.2搭建多主多从2.3安装配置 MySQL-MMM 一 、MMM简介 1.1MMM(M…

【Linux系统编程】粘滞位详解

文章目录 1. 背景2. 准备问题引出 3. 粘滞位4. 思考粘滞位的存在是否是必要的谁可以删除 上一篇文章我们学习了Linux权限相关的内容,这篇文章,我们再来学习一个知识点——粘滞位。 1. 背景 那为了让大家更容易理解粘滞位的概念,首先我们要来…

【国产虚拟仪器】基于ZYNQ7045+V7 FPGA的多通道数据同步采集设计方案(一)

多通道数据采集设备在当前信息数字化的时代应用广泛,各种被测量的信息 如光线、温度、压力、湿度、位置等,都需要经过多通道信号采集系统的采样和 处理,才能被我们进一步分析利用[37]。在一些对采集速率要求较高的军事、航天、 航空、工业制造…