java中的this
来源:互联网 发布:网络基础知识试题 编辑:程序博客网 时间:2024/06/03 18:00
代码编译的时候会将所有的方法编译成 类.方法()的形式正如上述 Demo中 testFun1()方法会被编译成 Demo.testFun1(),并且会将类中的每一个方法(除static之外)编译上一个参数,这个参数是this 类型为方法所在类的类型,比如Demo.testFun1(Demo this)。
对于new Demo()实在堆上分配一个具有所有成员变量的(除static变量)一块内存并且初始化为0.这就好比C语言中用malloc函数创建的一个具有int i = 0; int j = 0; 的结构体,结构体的名字为Demo,返回一个指向分配的内存空间的首地址。
对于d.testFun1()会解析成 testFun1(d)(包括play 等方法 如上图 ),这就明确了那个对象使用类方法了,这好比C语言中函数调用,只不过传入了一个结构体指针,指明那个对象使用这个方法。
可以看出,this的强大,帮程序员做了好多事,是的可以仅仅考虑面向对象的设计。
这个与上述主要区别在于有了继承,其他的过程和上面那个一样。不一样在于 Test()中TestFun()到底调用谁的。 这其实就是一个向上转型的过程。
Test()参数是Test类型的this但是d是Demo 即Test this = d; 这是实际就是基类的引用指向了导出类的对象,那么对于TestFun(d)调用谁的在于后期绑定机制。
0 0
- 【Java】java中的this
- java 中的this变量
- java中的this用法
- java中的this关键字
- java 中的this关键字
- java中的this关键字
- Java中的 this使用
- java中的this关键字
- java中的关键字this
- java 中的关键字 this
- Java中的this关键字
- Java中的this
- java中的THIS指针
- Java中的this
- java中的this
- Java中的this指针
- Java中的this关键字
- Java 中的this深解
- swift 字符、元组、随机数、区间运算、操作符重载——swift学习(三)
- mysql 关于table_lock_wait和table_lock_immediate的问题
- Xcode7 使用NSURLSession发送HTTP请求报错
- 为什么你应该(从现在开始就)写博客
- 蓝牙RFCOMM剖析(一)
- java中的this
- java 调用oracle 存储过程
- 我是CSDN福利狮,今天来给大家发福利!
- CentOS7 源码安装atop htop
- 使用jrtplib(RTP)传输H.264视频文件(2)
- hdoj 1251 统计难题【字典树--模板-增-查】
- 个人总结
- arm体系结构:arm920t
- cocos3.10游戏移植到安卓平台教程(c++版本)