JAVA多态性我和网友交流实录

SpringBoot+Vue+MySQL 高校学科竞赛平台 完整可运行版(源码+文档) 本项目基于SpringBoot+Vue+MySQL构建高校学科竞赛管理平台,覆盖学生、教师、领队教师、管理员四大角色,实现竞赛发布、报名、刷题、评分、公示等全流程闭环管理。系统架构清晰,技术主流,配套完整源码、数据库脚本、万字论文、开题报告、答辩PPT及部署文档,支持一键运行,适用于毕业设计、课程设计及院系二次开发,真正实现“开箱即用”。 阅读详情
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> 我在这里公开和我dennisboys的学习交流信件,我们主要在谈java中多态性问题。 这里感谢我的好朋友能给我一个结合自己能力解释问题的机会,在解释中有出错 或者需要讨论的部分希望能通知我一声。 上篇关于多态性的文章请参阅我前面写的<>. ******************************************************************************* 网友dennisboys的提问部分开始 ******************************************************************************* 从头到尾把你的代码看了n次,画了n个图(关于父类和子类的函数地址图),有以下一些迷惑 test t=new test(); base b=new base(); b=t; /* 问题一: 这里是把父类的引用指向子类,那是不是说调用父类的方法就等于调用子类的方法呢?就是 如果b.display2()不是调用子类的display2()方法吗?而子类有display2()方法,为什么不能 调用呢?(我试过写代码了,果然如你所说是出错的。) 对于以上的问题,你有一段文字好像是对其作解译的。不过我不太清楚。不知是不是以下这 段。 引用原文: 同时可能有人要问,子类中那个函数地址不是也在虚拟函数表中吗? 很高兴你问这样的问题,但是父类引用看到的虚拟函数表是没有 那个函数项目的,因为他对于父类引用绝对是不可见。 我现在理解是如果在子类中如对方法作了更改或新增的方法,对父类来说是不可见的?理解 对吗?? */ 问题二: ((test)b).display(); 另一个迷感就是你说的强制转换类型的语法到底是怎样的??我不明白为((test)b)代表什么 ? 不过说回来(我怎么觉得这个例子是在说继承??),这个例子使我对继承有了很深的认识 ,我倒是觉得对多态性还是一知半解,(别说我笨笨)可能我还没清楚到底哪用到了多态性, 不过请先回复了我以上两个问题,希望你回复了我以上两个问题(结合我研究你的代码)使我 对多态性有更好更深的认识。。 ******************************************************************************* 网友dennisboys的提问部分结束 ******************************************************************************* ******************************************************************************* zosatapo的解释部分开始 ******************************************************************************* 你真的应该谢谢我的,因为我辛辛苦苦打了篇文章, 因为网络原因没有能成功保存,害了我重写一次, 没有办法,谁叫你是我的好朋友呢。 首先谢谢你耐心看完我的文章。 下面我就我上次写的那篇文章和你的问题作简单的说明但是又比较复杂的说明。 我上次写的那篇文章存在一处写作错误,我在网上已经修正了,这里告诉你一下: 上次的原文中有这样的几句话 **************************************** // 下面调用会出错的 file://t.display2(); file://应该象下面那样 ((test)b).display2(); ****************************************** 这几句话写作上有错误: 应该改成成下面这样: ********************************************** // 下面调用[不]会出错的 (这里多了一个[不]字) file://t.display2(); ######################################### 实际上我上面这两行跟本文没有关系的 但是为了你很好的理解动态性,你可以 把上面的代码与下面的进行比较。 ######################################### file://下面这行调用不会出错 file://b.display2(); 这里加了一行 file://应该象下面那样 ((test)b).display2(); **********************************************‘ 下面正式开始我们今天的话题,正对你的问题我进行解释, 这里我尽可能的解释详细一点让你明白,实际上这里太复杂 涉及到OOP的具体实现问题,这个问题又不得不涉及到编译器 问题,主要的又是对象内存布局问题。 由于第二个问题比较简单,我把回答问题的次序颠倒一下。 ********* 问题二 ********* 你说的很对,我这里解的是继承,但是我这里解的不仅仅是继承的 问题。可以这样是你说的继承只是我解释动态性问题的一个途径和 手段而已,因为继承和多态性一样是面向对象中很重要的概念,不 是写一点文章就可以说明白的。 简单一点和不精确的说,动态性与是继承不可分割的,如果没有继承 根本就谈不上多态性的。所以我说你说的对,但是你没有真正明白我 例子的作用(55555555~~~~~~~~~~~~~我的心血呀) ********* 问题一 ********* 首先需要说明的是你对这个问题的理解是不正确的。 这个问题更是复杂的一塌糊涂,我尽量用一些不标准的词汇来说明这个问题。 因为这样便于理解。我这里不解太多的理论,因为我自己现在也正在研究jvm 规范的,因为很多东西java和c 不同,虽然两者实现很相似。上面这点, 我是根据我个人的一些实践,包括理论方面和程序编写实践得到的。但是 我也不敢全部拿c 的那套实现讲给你听,实际上讲了你也不一定听得懂的。 我这里主要讲一些基本的知识,你记住就可以了的,等你学习深入的时候 我再给解释,也许那时候你自然就懂了。 实际上在继承以后,子类会重新设置自己的虚拟函数表, 这个虚拟函数表中的项目有由两部分组成。从父类继承的虚拟函数和子类自己 的虚拟函数。 记住一个很简单又很复杂的规则,一个类型引用只能引用引用类型自身含有的 方法和变量。你可能说这个规则不对的,因为父类引用指向子类对象的时候, 引用是子类的方法的。我告诉你这个规则对于这样的情况依然是成立的。放松 你的大脑,不要想一些乱七八糟的事情,仔细听我分析。 对了,到这里的时候我假设你对于上面的规则除了虚拟函数调用的情况下, 其他的静态函数引用,以及变量引用都明白了。 下面我们开始我们的重量级说明。虚拟函数引用。 下面是jvm规范中关于对象内存布局的说明,我没有翻译 我想你可以看明白,反正我现在看英文没有问题, 如果不明白就查字典。 The Java Virtual Machine does not require any particular internal structure for objects. In Sun's current implementation of the Java Virtual Machine, a reference to a class instance is a pointer to a handle that is itself a pair of pointers: one to a table containing the methods of the object and a pointer to the Class object that represents the type of the object, and the other to the memory allocated from the Java heap for the object data. 根据这里我就知道实际上jvm关于多态性支持解决方法是和c 中几乎一样的, 只是c 中编译器很多是把类型信息和虚拟函数信息都放在一个虚拟函数表中, 但是利用某种技术来区别。 所以当你使用父类引用指向子类的时候,其实jvm已经使用了编译器产生的类型 信息调整转换了。这里你可以这样理解,相当于把不是父类中含有的函数从虚拟 函数表中设置为不可见的。注意有可能虚拟函数表中有些函数地址由于在子类中 已经被改写了,所以对象虚拟函数表中虚拟函数项目地址已经被设置为子类中完成 的方法体的地址了。 上面这一段就是为什么父类引用指向子类对象时候,有的方法可以调用,有的方法 却不能调用。 虚拟函数调用是经过虚拟函数表间接调用的,所以才得以实现多态的。
RenderDoc实战:5分钟搞定安卓Vulkan应用抓帧(含常见连接失败排查) 本文详细介绍了如何使用RenderDoc工具对安卓Vulkan应用进行抓帧分析,包括环境配置、完整抓帧流程及常见连接问题的解决方案。通过实战案例和高级技巧,帮助开发者快速定位渲染问题和性能瓶颈,提升移动图形开发效率。 阅读详情

相关推荐

Concentration Inequality(集中不等式)更新版

欢迎来我博客 https://wyue.name/2020/04/17/1/阅读这一篇博文 转载前请联系我,联系方式请见我博客 https://wyue.name/ Concentration inequality 刻画了一组随机变量的和(或者样本平均数)与其期望值的偏离程度,在算法收敛性分析过程中是非常有用的一类不等式。 这次主要总结一下最近一段时间遇到的集中不等式,不仅是不等式形式,...

Yue的博客 4555

JAVA多态性;我和网友交流实录

JAVA多态性;我和网友交流实录    zosatapo(原作)   关键字     Java 多态性 面向对象   我在这里公开和我dennisboys的学习交流信件,我们主要在谈java中多态性问题。这里感谢我的好朋友能给我一个结合自己能力解释问题的机会,在解释中有出错或者需要讨论的部分希望能通知我一声。上篇关于多态性的文章请参阅我前面写的;>;

Go for it! 479

【深度学习】肺结节分割项目实战二:分割肺实质

在后续训练模型的时候如果直接使用原始的肺部CT图像,其中的非肺区域会对训练造成干扰,因此我们需要提取分割肺实质。这一部分参考了kaggle上的教程。 从这张CT图像中可以看出扫描器以外的部分为黑色,背景和肺内部颜色较深,非肺组织和骨头颜色较浅。我们的目的是将肺部分割出来。由于肺部区域和其他部分对比明显,我们可以设置一个合适的阈值对图像中的区域进行隔离。 import argparse import os import numpy as np from medpy.filter.smoothing imp

weixin_42182906的博客 7242

JAVA多态性<==>我和网友交流实录

我在这里公开和我dennisboys的学习交流信件,我们主要在谈java中多态性问题。这里感谢我的好朋友能给我一个结合自己能力解释问题的机会,在解释中有出错或者需要讨论的部分希望能通知我一声。上篇关于多态性的文章请参阅我前面写的>.******************************************************************************* 

zosatapo的专栏 1200

SpringBoot与锐浪报表服务器深度整合实战指南

本文详细介绍了SpringBoot与锐浪报表服务器的深度整合实战指南,包括环境准备、Windows/Linux系统配置、核心功能实现代码解析及常见问题解决方案。通过具体案例和代码示例,帮助开发者高效完成报表系统的集成与部署,提升企业级应用的报表处理能力。

weixin_29238147的博客 370

Django 小实例S1 简易学生选课管理系统 —— 〇、初步介绍与演示

python Django实现的一个简易的教务选课系统。 介绍与演示的视频版本已发到我的b站: https://www.bilibili.com/video/BV1er4y1w7ty。 项目已上传到我的github: https://github.com/BigShuang/SimpleStudentCourseManagementSystem。 S1总目录: 〇、初步介绍与演示 一、项目流程梳理与数据库设计 ======================= 大爽歌作,made by big shuang.

大爽老师的博客 5945

JAVA多态性<==>我和网友交流实录 (转)

JAVA多态性<==>我和网友交流实录 (转)[@more@]我在这里公开和我dennisboys的学习交流信件,我们主要在谈Java中多态性问题。这里感谢我的好朋友能给我一个结合自己能力解释问题的机会,在解释中有出...

csd3176的博客 271

Ragflow技术栈分析及二次开发指南

Ragflow是目前团队化部署大模型+RAG的优质方案,不过其仍不适合直接部署使用,本文将从实际使用的角度,对其进行二次开发

兴趣使然的创作者 1万+

InnoDB 内存结构总览:Change Buffer、AHI 与 Log Buffer

本文系统梳理InnoDB内存结构中的ChangeBuffer、Adaptive Hash Index(AHI)与LogBuffer。ChangeBuffer缓存二级索引页不在内存时的变更,减少随机IO,仅在页加载时合并;聚簇索引修改立即执行,因数据本身不可延后。AHI基于高频等值查询自动构建哈希索引,加速定位,仅支持等值操作。LogBuffer为redo log内存缓冲,配合磁盘日志实现崩溃恢复。三者均服务于性能优化,其中ChangeBuffer与AHI共享BufferPool空间,而LogBuffer独立

bksczm的博客 304

单卡也能玩转Qwen2.5-VL微调!3090实测Grounding任务调参技巧大全

本文详细介绍了如何在单张RTX 3090显卡上,通过梯度累积、BF16混合精度训练、梯度检查点等关键技术,成功微调Qwen2.5-VL多模态大模型以完成Grounding视觉定位任务。文章提供了从数据处理、参数配置到训练监控的完整实战调参技巧,为资源有限的开发者提供了可行的解决方案。

weixin_29098117的博客 425

6、Cocos2D游戏开发:精灵添加与角色实现

本文详细介绍了在Cocos2D游戏开发中如何添加背景精灵和玩家角色精灵。通过创建GameScene场景、组织项目资源、使用多分辨率图像适配不同设备,并深入讲解了将角色拆分为上下半身以实现更真实瞄准效果的原理。文章还解析了Cocos2D的图像搜索机制、锚点概念及其应用,以及如何通过父子节点关系管理复合角色。最终实现了猎人角色在场景中的正确显示与定位,为后续动画和交互功能打下基础。

e3f4g5的博客 91

第三篇 第 6 课

前置:第三篇第 1 课(stdx 引入),第二篇第 1 课(std.regex)。环境:仓颉 SDK 1.2.0。本文所有代码与输出均逐行实测。

weixin_41618057的博客 546

157、飞控中的鲁棒自适应控制

本文总结了飞控系统中鲁棒自适应控制的实践经验。作者通过炸机案例引出传统PID控制的局限性,分析了鲁棒性与自适应性的本质矛盾,提出"用鲁棒性兜底,用自适应性提性能"的设计原则。重点介绍了模型参考自适应控制(MRAC)的实现方法,包括参考模型设计、自适应律调参技巧(建议初始增益设为0.01)、直接/间接自适应的应用场景差异,以及防止参数漂移的鲁棒修正方法。文章还分享了实际调试中的三大关键问题(初始值设定、激励条件、执行器饱和)及解决方案,并推荐了"鲁棒PID+自适应前馈"的混合架构。最后强调调试顺序应为先保证鲁

2401_88858637的博客 28

信创环境下PageOffice文档控件适配与实践

信创适配做到文档控件这一层,拼的已经不是"有没有国产版本",而是同一个功能在两类终端上是否真的等价。等价的标准很具体:同一次点击能得到同样的结果,同一份公文能得到同样的版式,同一个项目不需要维护两套代码。这背后是三件并不轻松的工作:服务端用一套接口同时支撑两类终端,客户端把两种系统与四种芯片的安装包分发清楚,文档内核层由产品侧跟着 WPS 的版本走。浏览器这一层的压力,则被收进了产品自己的窗口里——升级节奏由产品掌握,不再交给运气。

zi_wu_xian的专栏 333

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【从零理解 Spring AI · 12】MCP 的两种角色:做客户端还是做服务端

上一篇讲了 MCP 的概念:标准协议、三大角色、M+N 替代 M×N。

nice_lcj520的博客 577

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Java 集合容器高频面试题全解:HashMap 树化阈值、1.7 死循环与 ConcurrentHashMap 演进(2026 招聘 JD 真题复盘)

HashMap 树化阈值 8 的泊松分布依据、退化阈值 6 的防抖设计、JDK 1.7 头插成环死循环的排查与修复、1.8 尾插后为何仍线程不安全、ConcurrentHashMap 放弃分段锁的原因与 ForwardingNode 协作扩容、computeIfAbsent 死锁陷阱、大集合找重复的场景题选型,附三层追问链自测。题目来源为 38 期公开招聘 JD 样本与字节、拼多多、建行、美团、快手公开面经。

蒙眼过河 423

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

spdlog 同步日志库使用详解

spdlog是一个轻量级 C++ 日志库,支持同步日志、异步日志、多线程日志、日志文件轮转和自定义日志格式。对于嵌入式 Linux 应用开发,我建议先使用。它可以帮我们完成:日志级别过滤。时间戳和线程 ID 输出。日志格式化。终端和文件输出。多线程安全写入。日志文件按大小或时间轮转。我们不需要自己实现互斥锁、文件写入、日志格式化和轮转等底层功能。

zengjiajun2006的博客 1121

JavaSE通关手册:数据类型与变量

代码无需额外处理,编译时编译器自动完成转换。

xys_678的博客 232

Java 多态 学习笔记

多态是面向对象编程的重要特性,指同一操作作用于不同对象时产生不同行为。其核心在于“父类引用指向子类对象”,结合方法重写实现运行时动态绑定。多态使代码更灵活、可扩展,如用Person p = new Student();统一处理各类人员注册,无需修改调用逻辑。但多态无法直接调用子类特有方法,需通过instanceof判断并强制转换。编译时看左边(类型),运行时看右边(实际对象),实现解耦与维护便利。

AA_AA114514的博客 368

IDEA 简介:从零认识 IntelliJ IDEA

IDEA 全称,是由 JetBrains 公司开发的一款主流 Java 集成开发环境(IDE)。它集代码编辑、编译、调试、测试、版本控制、构建管理等功能于一体,被大量 Java 开发者视为日常开发的首选工具。所谓 IDE(Integrated Development Environment,集成开发环境),就是把写代码所需的各类工具整合到同一个界面中。相比只用文本编辑器加命令行编译,IDE 能显著减少重复操作,让开发者把精力集中在业务逻辑上。

ztI10的博客 180

Docker部署linkding:HTTPS与数据备份

部署私人书签库,除了让页面能够打开,还需要考虑几个实际问题:重建容器后数据是否保留、登录和保存是否正常、升级前怎样备份,以及出现 502 或 CSRF 错误时从哪里检查。本文使用 Docker Compose 部署 linkding,采用默认 SQLite 数据库,通过 Caddy 提供 HTTPS,并完成账户创建、数据持久化验证和备份。如果重建后账户或书签消失,应先检查是否换了项目目录、改了挂载路径,或者启动了另一套实例,不要急着重新初始化。遇到权限问题,应根据日志确认具体目录和运行用户,再调整权限。

tedcloud123的博客 173

动态代理两大流派:JDK 代理与子类代理

业务类想加日志,最直白的写法是侵入式修改: 问题很明显:每个方法都要改一遍,改一个业务要动十处。代理模式的解法是:调用方不直接依赖 ,而是依赖一个代理对象。代理对象长得跟目标一模一样,调用它 → 代理先执行增强逻辑 → 再转调真实对象。 关键在于:代理对象的类型是哪来的?这就是"动态"二字的含义:代理类在运行时才诞生。两个角色: 承载增强逻辑, 负责生成代理类。 组装代理并调用: 输出: 业务代码 一行没动,增强逻辑全在 里。这就是 AOP 的味道。 内部四步: 第 2 步 内部:先查 (同一个接口

Android的专栏 654

C++20协程怎么运行?原理与三大核心组件深度剖析

C++20协程是轻量级的无栈状态机,通过co_await、co_yield、co_return实现挂起与恢复,由Promise、协程句柄和Awaitable三大组件协同工作。协程与线程互补,适用于高效管理大量并发I/O任务,显著降低上下文切换开销。其核心在于编译器生成的状态机机制,需配合库(如cppcoro)使用。掌握Promise控制逻辑、句柄生命周期管理及Awaitable语义,是构建高性能异步程序的基础。

Lucis__的博客 156

c++ explicit关键字详解

explicit。

拒绝AI文,努力在AI时代写出感动人心的好文章 169

TRingBuffer两端都能增删(快递站版)

TRingBuffer 是一个支持两端增删、下标访问且容量动态增长的环形双端队列。它通过无符号索引的永不归零设计,利用减法自动模运算实现空满判断与元素计数,避免了传统环形缓冲浪费格子的问题。内部以票号(索引)标记首尾,扩容时重排元素为连续存储,保证 O(1) 操作与高缓存效率。虽不线程安全,但其高效性使其成为游戏开发中事件队列、命令缓冲等场景的理想选择。

u013768914的博客 312

Teamcenter Java SOA 开发:连接、查询与保存

本文介绍如何通过 Java 调用 Teamcenter SOA 接口实现外部系统对接,涵盖连接登录、查询保存等核心操作。以最小闭环示例展示 Connection、Service、ModelObject 等关键组件的使用,强调错误处理与事务管理要点。梳理了 DataManagement、Query、File Management 等 API 模块分工,并结合“工作移交WebService”案例,说明幂等性设计与流程状态返回的重要性。适用于 Web 门户、ERP 集成等场景,建议批量操作用 bulk 接口优化性

软件工程师文艺 275
上一篇: SOAP--新一轮竞争的三八线?(一)
下一篇: SOAP--新一轮竞争的三八线?(二)
java169
博客等级 码龄19年 27粉丝 2568原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值