Java之动态绑定(多态)

《Java基础知识》Java多态和动态绑定 在Java中,父类的变量可以引用父类的实例,也可以引用子类的实例。请读者先看一段代码: 运行结果:上面的代码,定义了三个类,分别是 Animal、Cat 和 Dog,Cat 和 Dog 类都继承自 Animal 类。obj 变量的类型为 Animal,它既可以指向 Animal 类的实例,也可以指向 Cat 和 Dog 类的实例,这是正确的。也就是说,父类的变量可以引用父类的实例,也可以引用子类的实例。注意反过来是错误的,因为所有的猫都是动物,但不是所有的动物都是猫。可以看出,obj 既可以是人类,也可 阅读详情

动态绑定是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用相应的方法

动态绑定的三个条件:

1.要有继承

2.要有方法重写

3.要有父类引用指向子类对象

class Animal {
	private String name;
	Animal(String name) {
		this.name = name;
	}
	
	public void enjoy() {
		System.out.println("animalshout...");
	}
	
}

class Cat extends Animal {
	private String eyesColor;
	Cat(String n,String c) {
		super(n);
		eyesColor = c;
	}
	
	public void enjoy() {
		System.out.println("catshoult...");
	}
}

class Dog extends Animal {
	private String furColor;
	Dog(String n,String c) {
		super(n);
		furColor = c;
	}
	public void enjoy() {
		System.out.println("dogshoult...");
	}
}


class Lady {
	private String name;
	private Animal pet;
	Lady(String name, Animal pet) {
		this.name = name;
		this.pet = pet;
	}
	public void myPetEnjoy() {
		pet.enjoy();
	}
}

public class TestTai {
	public static void main(String[] args) {
		Cat c = new Cat("catname", "blue");
		Dog d = new Dog("d ogname", "black");
		
		Lady l1 = new Lady("l1", c);
		Lady l2 = new Lady("l2", d);
		
		l1.myPetEnjoy();
		l2.myPetEnjoy();
		
		
	}
}

l1调用的是pet的方法,本来是animal引用,但是实际上是用的是cat对象,那就绑定到cat对象重写的方法



Java多态背后的秘密:动态绑定如何工作? 我是小米,一个喜欢分享技术的29岁程序员。如果你喜欢我的文章,欢迎关注我的微信公众号“”,获取更多技术干货!Hello,大家好!我是你们的老朋友小米,今天我们来聊聊Java中的多态实现原理。说到多态,大家肯定不会陌生,因为它是面向对象编程(OOP)的三大基本特征之一,和封装、继承并列。然而,对于多态的底层原理,你真的了解吗?今天,我们就从底层角度来剖析多态的实现,一探其中的奥秘! 阅读详情

相关推荐

DLMS-Blue-Book蓝皮书—曲线类

attribute_index 1 指的是第 1 个属性(即 logical_name),attribute_index 2 指的是第 2 个属性,等等;如果其他“曲线通用类”对象捕获了这个缓冲区,它们的缓冲区也将被清空,以保证它们的缓冲区条目是同质的。如果捕获对象是曲线通用类的缓冲区,则 data_index 标识缓冲区(即列)中的捕获对象(即内部曲线通用类中的列);如果曲线通用类已排序,则调用捕获方法将把新条目存储在缓冲区中的适当位置,移动所有后续条目,并可能丢失最不相关的条目。

一个bug是bug,多个bug能work 1452

Java中的多态和动态绑定

1 定义 Example 动态绑定的内部机制  1. 定义根据Core Java: 多态:一个对象变量可以指示多种实例类型的现象。 动态绑定:在运行时刻能够自动选择调用哪个方法的现象。 签名:方法名和参数列表构成一个签名 多态和动态绑定大多与继承有关,因为有了继承的出现,才有了父类与子类,然后就是随之而来的方法重写(override),即子类重写父类的方法。另一个出现的就是子

tianzhihensu的专栏 3013

详细了解sklearn中的CountVectorizer

CountVectorizer 是 scikit-learn(一个流行的 Python 机器学习库)中的一个文本特征提取类,其核心功能是将一系列原始文本(如句子、文档)转换为基于词频(word count)的数值矩阵。它基于词袋模型(Bag of Words, BoW)思想,忽略文本的语法结构和词序,仅关注词汇在文本中出现的频率,从而将文本转化为机器可理解的数字形式。文本 1:"I love machine learning"

2302_76568160的博客 1118

Java动态绑定和多态性详解

向对象的三大特性:封装、继承、多态。从一定角度来看,封装和继承几乎都是为多态而准备的。这是我们最后一个概念,也是最重要的知识点。 多态的定义:指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发送消息就是函数调用) 多态的技术称为:动态绑定(dynamic binding),是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。

xxx 2416

生物信息学投稿避坑指南:如何根据影响因子和审稿速度选择最适合的期刊

本文为生物信息学研究者提供全面的期刊投稿策略,重点解析影响因子、审稿速度等关键指标,帮助选择最适合的期刊。涵盖算法开发类和应用型研究的投稿路径,分析不同出版社特点及开放获取的利弊,并提供投稿全流程优化建议,助力高效发表研究成果。

weixin_42652674的博客 378

【HSCNN解析】HSCNN:从欠采样光谱图重建高光谱图的CNN网络

本文介绍HSCNN,是一个将欠采样光谱图重建为高光谱图的纯CNN网络,2017年提出。

上个大学哪有不疯的?硬撑罢了! 1619

java 动态绑定和多态_java-多态和动态绑定

一、什么是多态一个对象变量可以指示多种实际类型。当程序运行时,才能确定该变量引用的哪个类的对象,从而虚拟机自动选择调用哪个方法,这也被称为动态绑定。二、理解方法的调用过程我们以x.f(args)为例,A x = new B()。1.编译器查看对象变量的声明类型和方法名x声明为A类,编译器将列举A类及其父类中可以被继承的所有名为 f 的方法。由于可能存在重载,名为 f 但参数列表不同的方法可能有多个...

weixin_42364301的博客 197

智能化运维(AIOps)

• 调查显示,54.79%的企业当前着重关注智能运维的质量领域(包括异常检测、告警收敛、根因分析、 故障处置等)能力建设,其次45.77%的企业关注效率领域,45.49%的企业关注成本领域,30.82%的 企业关注安全领域。从目前的发展情况来看,现阶段AIOps能力大多集中在L2级别, 主要以系统辅助分析,帮助人工进行决策和操作为主,较为领先的 能力实践可以达到L3级别,而L4和L5级别随着AIOps的技术发展 和能力的逐步增强,将是未来智能运维能力建设的发展方向和目标。

追求更专业的设计 3095

Java多态之动态绑定

文章目录Java多态之动态绑定引用变量的类型编译时类型运行时类型方法绑定静态绑定动态绑定方法表 Java多态之动态绑定 上篇回顾:多态是面向对象程序设计非常重要的特性,它让程序拥有 更好的可读性和可扩展性。 发生在继承关系中。 需要子类重写父类的方法。 父类类型的引用指向子类类型的对象。 自始至终,多态都是对于方法而言,对于类中的成员变量,没有多态的说法。 上篇说到:一个基类的引用变量接收不同子...

天乔巴夏丶 476

使用NXP SBC插件开发FS26软件

FS26作为功能安全可达ASIL D的SBC,在配合NXP MCU的使用中非常广泛,本文介绍基于NXP官网的SBC代码包快速进行FS26软件的开发FS26使用过程中还有不少坑的地方,后面有空可以再介绍相关的功能。

赞的博客 647

医疗影像分析实战:肺炎X光片分类与分割

医疗影像分析实战:肺炎X光片分类与分割 ,人工智能,计算机视觉,大模型,AI,在医疗领域,医疗影像分析技术凭借其高效、精准的特点,成为疾病诊断与治疗的重要辅助手段。肺炎作为一种常见的呼吸道疾病,严重威胁人类健康,通过 X 光片对肺炎进行诊断是临床常用方法。利用计算机技术实现肺炎 X 光片的自动分类与分割,不仅能减轻医生的工作负担,还能提高诊断的准确性和效率。本文将深入讲解肺炎 X 光片分类与分割的实战过程,结合大量代码示例和关键概念解析,帮助读者掌握相关技术。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 3万+

Java 多态如何实现动态绑定

最近深入学习java,看到了动态绑定和多态这一章节,但遗憾的是,大部分的相关文章都停留于表面文字的描述。不得已,最后google了几篇英文文章,在此总结下这个问题。 一、静态绑定和动态绑定的区别 在Java中,当你调用一个方法时,可能会在编译时期(compile time)解析(resolve),也可能实在运行时期(runtime)解析,这全取决于到底是一个静态方法(static method)还是一个虚方法(virtual method)。如果是在编译时期解析,那么就称之为静态绑定(static bind

miss_na的博客 2317

USB_TYPE-C 母座电路设计

本文详细介绍了USB Type-C接口(C2765186)的电路设计要点,重点解析了电源、识别和数据三部分的关键连接方案。电源部分需并联VBUS和GND引脚并加宽走线以承载3A电流;识别部分必须为CC1/CC2引脚配置5.1kΩ±1%精度的下拉电阻,这是触发PD充电的核心条件;数据部分通过短接正反插引脚实现盲插功能。文档还提供了完整的引脚对照表,并强调PCB布局需注意ESD防护、差分走线阻抗控制等要点,为Type-C接口设计提供了实用指导。

在读研究生,FPGA电路设计与功能开发。 579

Java多态与动态绑定机制全解析

本文讲了 Java 多态的几种表现:同一类里同名方法参数不同(方法重载,编译时确定用哪个)、子类重写父类方法(运行时确定用哪个)、接口能指向不同实现类对象、父类和子类引用能互相转换。还说了动态绑定是怎么回事 —— 运行时根据对象实际类型找对应方法。同时讲了多态要满足的条件,能让代码更好扩展、减少关联,也提醒了属性和静态方法不支持多态这些点,帮你搞懂面向对象的这个核心特性。

Java是世界上最好的语言 1017

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Java-多态的动态绑定机制

Java-动态绑定机制 在通过学习完 Java 的封装、继承、多态 之后,我们通过下面一道例题来引出一个 Java 非常重要的一个机制:动态绑定机制。 习题 class A { // 父类 public int i = 10; public int sum() { return getI() + 10; } public int sum1() { return i + 10; } public int getI() { return i; } } class B extends

郭松源的博客 1018

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

java多态、动态绑定

如果是在编译时期解析,那么就称之为静态绑定(static binding),如果方法的调用是在运行时期解析,那就是动态绑定(dynamic binding)或者延迟绑定(late binding)。 多态使得父类型的引用变量可以引用子类型的对象。 如果调用子类型对象的一个虚方法(非private,final or static),编译器将无法找到真正需要调用的方法,因为它可能是定义在父类型中的方法,也可能是在子类型中被重写(override)的方法,这种情形,只能在运行时进行解析,因为只有在运行时.

Hello World程序员的博客 713

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

java动态绑定与多态_Java——动态绑定和多态

动态绑定的过程:虚拟机提取对象的实际类型的方法表;虚拟机搜索方法签名;调用方法。关于绑定相关的总结:在了解了三者的概念之后,很明显我们发现java属于后期绑定。在java中,几乎所有的方法都是后期绑定的,在运行时动态绑定方法属于子类还是基类。但是也有特殊,针对static方法和final方法由于不能被继承,因此在编译时就可以确定他们的值,他们是属于前期绑定的。特别说明的一点是,private声明的...

weixin_29527111的博客 297

【Java】动态绑定和静态绑定(多态)

绑定把一个方法与其所在的类/对象 关联起来叫做方法的绑定。绑定分为静态绑定(前期绑定)和动态绑定(后期绑定)。静态绑定静态绑定(前期绑定)是指:在程序运行前就已经知道方法是属于那个类的,在编译的时候就可以连接到类的中,定位到这个方法。在Java中,final、private、static修饰的方法以及构造函数都是静态绑定的,不需程序运行,不需具体的实例对象就可以知道这个方法的具体内容。动态绑定动态绑定(后期绑定)是指:在程序运行过程中,根据具体的实例对象才能具体确定是哪个方法。

康师傅没有眼泪 3157

0036 Java动态绑定机制、多态应用

Java动态绑定机制,多态数组,多态形参

m0_72797089的博客 304

Java-动态绑定和多态

动态绑定和多态 动态绑定是指“在执行期间(而非编译期)”半段所引用对象的实际类型,根据其实际的类型调用其相应的方法 如果用dos命令行中编译和执行java文件,具体过程是这个样的 当我对一个叫做HelloWorld的java文件编写完程序后(暂且认为是简单的打印HelloWorld),在命令行中的正确目录(指的就是存放该java文件的目录)下使用javac命令,这时会生成一个HelloWorld.class 文件,这个过程也就是编译过程,此时再通过输入java命令,这时就可以正确打印出HelloWorld!

weixin_48601914的博客 272

java多态 动态绑定_Java多态和动态绑定

在Java中,父类的变量可以引用父类的实例,也可以引用子类的实例。请读者先看一段代码:public class Demo {public static void main(String[] args){Animal obj = new Animal();obj.cry();obj = new Cat();obj.cry();obj = new Dog();obj.cry();}}class Ani...

weixin_39610415的博客 236

java多态 动态绑定_Java JVM 多态(动态绑定)

Java JVM 多态(动态绑定)@author ixenos摘要:绑定、动态绑定实现多态、多态的缺陷、纯继承与扩展接口、向下转型与RTTI绑定将一个方法的调用和一个方法的主体关联起来,称作(方法调用)绑定:1.前期绑定:在程序执行前绑定(由编译器和连接程序实现);2.后期绑定:在运行时根据对象的类型绑定(也称动态绑定或运行时绑定);a) 实现条件:能在运行时判断对象的类型,从而关联对应主体,调用...

weixin_33851300的博客 282

java 多态_小白学习——Java多态和动态绑定

在Java中,父类的变量可以引用父类的实例,也可以引用子类的实例。请读者先看一段代码:运行结果:不知道怎么叫喵喵~汪汪~上面的代码,定义了三个类,分别是 Animal、Cat 和 Dog,Cat 和 Dog 类都继承自 Animal 类。obj 变量的类型为 Animal,它既可以指向 Animal 类的实例,也可以指向 Cat 和 Dog 类的实例,这是正确的。也就是说,父类的变量可以引用父类的...

weixin_39849479的博客 91

java多态和动态绑定

java动态和动态绑定多态多态的定义多态的分类多态实现的条件多态在java中如何实现动态绑定 多态 多态的定义 多态:同一个行为具有多个不同表现形式或形态的能力。 在java中:父类型的变量可以引用子类型的对象 多态的分类 多态分两种: (1) 编译时多态(设计时多态):其中编辑时多态是静态的,主要是指方法的重载,它是根据参数列表的不同来区分不同的函数,通过编辑之后会变成两个不同的函数。 (2) 运行时多态:而运行时多态是动态的,它是通过动态绑定来实现的,JAVA运行时系统根据调用该方法的实例的类型来决定选

qq_53223168的博客 622

java 动态绑定 多态_Java基础:多态和动态绑定

概念多态:一个对象变量(如,变量e)可以引用多种实际类型的现象动态绑定:在运行时能够自动地选择调用哪个方法的现象动态绑定的过程1)编译器查看对象的声明类型和方法名。假设调用x.f(param),且隐式参数x声明为C类的对象。需要注意的是:有可能存在多个名字为f,但是参数类型不一样的方法(f(int) 或 f(string))。编译器将会一一列举所有C类中名为f的方法和其超类中访问属性为public...

weixin_29643223的博客 195
上一篇: ubuntu安装JDK配置环境变量
下一篇: Java之抽象abstract关键字
Eric_keke
博客等级 码龄12年 37粉丝 221原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值