一道java题所揭示的原理
来源:互联网 发布:广数系统g76螺纹编程 编辑:程序博客网 时间:2024/06/03 18:34
看到一道java题,感觉很不错,我在原来的版本上增加了些代码,一起来看看下面的代码将输出什么
输出结果:
i=0;
j=22;
ci=22;
分析一下:这是一个继承结构,child继承了Father的 j 和 print ()。
抓住两个重点:
1,在类被编译时作了些什么呢
Father Child
------- --------
┌──> i <──── @ i
│ ------- --------
│──> j <──── @ j <─┐
│ ------- -------- │
│ add() add() ──┤
│ ------- ------- │
└──print() <─ @ print() │
------- ------- │
┌── _print() │
│ -------- │
└──> i <──┘
@var表示一个引用。
全局变量和局部变量的地址都已经确定好了。
2,对象被new时做了些什么
我们都知道,面向对象语言的多态,是由程序运行时去指定方法的入口地址实现的。
还原一下构造方法,
当new Child()时,Child将调用super()执行Father()的构造器,Father中this指向的是Child中的引用。那么在Father构造器中
调用了Object构造器后,将执行Child.add(1);
到此可以轻松的解决这个问题了,
在Child被创建时调用了2次Child.add()方法。Child中的i,@j内容被改变。Father中的add()从始至终没有被执行过。
c.print()调用Father中的print()打印Father中的i,j
- 一道java题所揭示的原理
- 一道JAVA面试题所引出的知识点
- 一个心理测试所揭示的投资哲理
- 心理所等揭示“吃亏是福”的现实价值
- 揭示Java领域的几大趋势
- 一道奇葩的ACM题所带给我的人生哲理
- "谁养鱼"(爱因斯坦所出的一道推理题)
- TRIZ--揭示了创造发明的内在规律和原理
- 一个小例子揭示事务日志的工作原理
- 一道有趣的java题
- 一道JAVA题的解决
- 一道有意思的JAVA题
- 一道Java面试题,由于catch 捕获异常的原理
- 揭示摄像头的奥秘
- 一道题看指针和数组的工作原理
- 一道微软算法题的java解法
- java 匿名类的一道题
- java 变量 分配内存空间的一道题
- 华为心情
- Ext.data专题九:关于scope和createDelegate()
- 启动线程时传递参数的方法
- eWebEditor suffers from a directory traversal vulnerability
- Visual C++ Tips and Tricks
- 一道java题所揭示的原理
- FREEBPX add admin exploit
- 资料网址
- vBulletin version 4.0.1 remote SQL injection exploit
- Window API 关于控件的消息处理(SendMessage)(转)
- Joomla Component com_uploader) Remote File Upload Vulnerability
- 关于智慧
- Ext.data专题十: Ext与Dwr
- JDBC 链接 SQL SERVER 详解