多态的绑定机制

多态就是父类的引用指向子类的对象。但是这个引用如何能够知道自己调用方法的时候是调用子类的还是调用父类的。当在main方法中创建对象的时候,这个时候会在方法栈中创建了一个临时的引用,指向堆内存中的实体。这个临时的(因为mian方法结束后这个引用就不在存在了)引用,只能指向属于它或他的子类的对象。在对象实体的存储过程中,对象的方法存放在方法池(就是一个区域)中,存储在类里面的只不过是一个方法的地址引用。这个地址的引用指向这个类所在的方法池。但当这个对象调用方法时,如果这个方法子类自己没有,那么这个引用便会从本类的方法池中去调用方法。但是如果这个方法子类自己有,自己没有,那么这个引用便会去子类的方法池中调用这个方法,如果子类重写了父类的方法,那么这个时候这个引用便会便会去子类方法池中调用被重写的方法。

这里有两个引用,一个是对象的引用,用来调用方法,一个是类中方法地址的引用,用来动态绑定具体调用的是哪个方法。

时间: 2024-08-09 08:16:36

多态的绑定机制的相关文章

C++ 多态的实现机制

关键词:多态 虚函数指针 虚函数表 动态绑定 迟绑定 基类 子类  纯虚函数 抽象类 封装+继承+多态 代码重用 接口重用 隐藏规则(子类中的函数和基类中的函数) 一.为什么需要多态,多态的目的是什么? 二.多态有几种实现方式,多态的实现机制? 三.什么纯虚函数和抽象类,为什么需要定义纯虚函数和抽象类? 1. 用virtual关键字申明的函数叫做虚函数,虚函数肯定是类的成员函数.2. 存在虚函数的类都有一个一维的虚函数表叫做虚表.类的对象有一个指向虚表开始的虚指针.虚表是和类对应的,虚表指针是和

引用内部函数绑定机制,R转义字符,C++引用,别名,模板元,宏,断言,C++多线程,C++智能指针

 1.引用内部函数绑定机制 #include<iostream> #include<functional> usingnamespacestd; usingnamespacestd::placeholders; //仿函数.创建一个函数指针,引用一个结构体内部或者一个类内部的共同拥有函数 structMyStruct { voidadd(inta) { cout <<a <<endl; } voidadd2(inta,intb) { cout <&

关于jQuery新的事件绑定机制on()的使用技巧

今天浏览jQuery的deprecated列表,发现live()和die()在里面了,赶紧看了一下,发现从jQuery1.7开 始,jQuery引入了全新的事件绑定机制,on()和off()两个函数统一处理事件绑定.因为在此之前有bind(), live(), delegate()等方法来处理事件绑定,jQuery从性能优化以及方式统一方面考虑决定推出新的函数来统一事件绑定方法并且替换掉以前的方法. on(events,[selector],[data],fn) events:一个或多个用空格分

jQuery新的事件绑定机制on()

今天浏览jQuery的deprecated列表,发现live()和die()在里面了,赶紧看了一下,发现从jQuery1.7开始,jQuery引入了全新的事件绑定机制,on()和off()两个函数统一处理事件绑定.因为在此之前有bind(), live(), delegate()等方法来处理事件绑定,jQuery从性能优化以及方式统一方面考虑决定推出新的函数来统一事件绑定方法并且替换掉以前的方法. on(events,[selector],[data],fn) events:一个或多个用空格分隔

JAVA学习篇--ThreadLocal,Java中特殊的线程绑定机制

在DRP项目中,我们使用了ThreadLocal来创建Connection连接,避免了一直以参数的形式将Connection向下传递(传递connection的目的是由于jdbc事务要求确保使用同一个connection连接).那么ThreadLocal是如果做到的呢?它和同步锁的不同在哪里? 是什么: 对于ThreadLocal看英文单词我们很容易理解为一个线程的本地实现,但是它并不是一个Thread,而是threadlocalvariable(线程局部变量).也许把它命名为ThreadLoc

【分享】WeX5的正确打开方式(3)——绑定机制

今天整理一下WeX5的绑定机制. 原生的问题  假设我们做一个订单系统,需要显示商品单价,然后可以根据输入数量计算出总价并显示出来.使用原生代码也很容易实现,效果:         代码如下: <!--HTML code--> Price: <span id="price"></span><br /> Account: <input type="text" id="account" value

jQuery新的事件绑定机制on()示例应用

投稿:whsnow 字体:[增加 减小] 类型:转载 从jQuery1.7开始,jQuery引入了全新的事件绑定机制,on()和off()两个函数统一处理事件绑定,下面通过示例为大家介绍下 今天浏览jQuery的deprecated列表,发现live()和die()在里面了,赶紧看了一下,发现从jQuery1.7开始,jQuery引入了全新的事件绑定机制,on()和off()两个函数统一处理事件绑定.因为在此之前有bind(), live(), delegate()等方法来处理事件绑定,jQue

d3可视化实战04:事件绑定机制

首先说明,d3支持所有的JS事件——甚至其他代码的自定义事件.这里有一个列表,The MDN Event Reference, 包含了几乎所有浏览器创建的事件类型.大家有需要可以去查看. D3的事件绑定的语法,与jquery等其他类库用起来区别不大,都是object.on( event, listener )的形式.但是在具体实践中,我们经常会遇到给同一个对象绑定多个事件监听器的问题.这里就原生js.jquery和d3分别进行讨论. 一.原生JS的事件绑定 在探讨这个问题之前,我们首先需要看一下

Java-ThreadLocal,Java中特殊的线程绑定机制

在DRP项目中,我们使用了ThreadLocal来创建Connection连接,避免了一直以参数的形式将Connection向下传递(传递connection的目的是由于jdbc事务要求确保使用同一个connection连接).那么ThreadLocal是如果做到的呢?它和同步锁的不同在哪里? 是什么: 对于ThreadLocal看英文单词我们很容易理解为一个线程的本地实现,但是它并不是一个Thread,而是threadlocalvariable(线程局部变量).也许把它命名为ThreadLoc