A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨_扬 中级黑马   /  2012-7-4 10:15  /  3148 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨_扬 于 2012-7-4 11:45 编辑

在我的“OBJC考题”第四期中的第二十题是
3. interface Animal { void makeNoise(); }
4. class Horse implements Animal {
5.                 Long weight = 1200L;
6.                public void makeNoise() { System.out.println("whinny"); }
7. }
8. public class Icelandic extends Horse {
9.                 public void makeNoise() { System.out.println("vinny"); }
10.                 public static void main(String[] args) {
11.                         Icelandic i1 = new Icelandic();
12.                         Icelandic i2 = new Icelandic();
13.                        Icelandic i3 = new Icelandic();
14.                         i3 = i1; i1 = i2; i2 = null; i3 = i1;
15.                 }
16. }
当程序运行到第15行是,一共产生多少个可以被garbage conllector回收的对象
A. 0
B. 1
C. 2
D. 3
E. 4
F. 6

我在做题的时候认为应该应该产生了2个garbage object ,但是正确答案是4个
程序中一共new了3个Icelandic的实例,但为什么最终会产生了4个garbage object呢?
那是不是说在创建Icelandic的实例的同时是不是其父类Horse也被实例化了,因此最后产生了4个garbage object呢?
如果以上说法成立,那如果父类是抽象类,子类在实例化的时候父类也能被实例化吗?显然不合理。
这里还有一个问题,在父类中有一个变量,大家都知道,变量是静态绑定的,那如果子类实例化时父类没有被实例化,那父类的变量绑定到了哪里呢?
那如果父类是一个包含了变量的抽象类时父类在子类实例化的时候有没有被实例化呢?
还是说,如果Horse是抽象的,这道题的答案就是“2”呢?
求解答

评分

参与人数 1技术分 +1 收起 理由
蒋映辉 + 1

查看全部评分

3 个回复

倒序浏览
我在做题的时候认为应该应该产生了2个垃圾对象,但是正确答案是4个//是四个
程序中一共new了3个Icelandic的实例,但为什么最终会产生了4个垃圾对象呢?//可以 通过i3 = i1; i1 = i2; i2 = null; i3 = i1;语句得知是四个垃圾对象,包含了父类Horse中的两个
那是不是说在创建Icelandic的实例的同时是不是其父类Horse也被实例化了,因此最后产生了4个垃圾对象呢?//父类确实是被实例化了,抽象类中有默认的构造方法,只要有构造方法的就可以被实例化  通过生成的class文件就可以知道了
如果以上说法成立,那如果父类是抽象类,子类在实例化的时候父类也能被实例化吗?显然不合理。          //抽象类只是不能用new操作符直接实例 接口除外,因为接口中没有默认构造方法
这里还有一个问题,在父类中有一个变量,大家都知道,变量是静态绑定的,那如果子类实例化时父类没有被实例化,那父类的变量绑定到了哪里呢?//参照上面
那如果父类是一个包含了变量的抽象类时父类在子类实例化的时候有没有被实例化呢?
还是说,如果Horse是抽象的,这道题的答案就是“2”呢?

评分

参与人数 1技术分 +1 收起 理由
蒋映辉 + 1

查看全部评分

回复 使用道具 举报
葛奎 发表于 2012-7-4 11:11
我在做题的时候认为应该应该产生了2个垃圾对象,但是正确答案是4个//是四个
程序中一共new了3个Icelandic的 ...

哦~,明白了,谢谢
回复 使用道具 举报
这样的问题和解答都不给技术分吗?到底什么样的内容才能给技术分?求解答
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马