黑马程序员技术交流社区

标题: 有感而发,大家看一道判断题。 [打印本页]

作者: 赵宇    时间: 2012-9-20 12:29
标题: 有感而发,大家看一道判断题。
本帖最后由 赵宇 于 2012-9-25 08:41 编辑

1、2、3、4  哪个可以编译通过?说出理论依据

public class ArrayTest6
{
public static void main(String[] args)
{
  I[] i = new I[2];                                                                                  1、
  
  I i = new I();                                                                                       2、

  I j = null;                                                                                            3、
  

  i[0] = new C();                                                                                   4、

   i[1] = new C();  
}
}
interface I
{
}
class C implements I
{
}


作者: 张小龙    时间: 2012-9-20 12:47
一二个都是同样的原理,因为是接口,所以不能实例化,错误

第三个肯定能通过  因为只是定义一个对象,并没有实例化

至于第四个 我附张图给你看说明吧:

q1.png (14.39 KB, 下载次数: 29)

q1.png

作者: 赵宇    时间: 2012-9-20 12:49
张小龙 发表于 2012-9-20 12:47
一二个都是同样的原理,因为是接口,所以不能实例化,错误

第三个肯定能通过  因为只是定义一个对象,并没 ...

第一个是可以的,你查查资料。
作者: 赵宇    时间: 2012-9-20 13:12
I j = null;
这个是可以的,表示不指向任何值。
i[0] = new C();   
这个也是可以的  ,多态。
作者: 赵宇    时间: 2012-9-20 13:13
吕书凯 发表于 2012-9-20 12:53
public class ArrayTest6
{
public static void main(String[] args)

前两个对了I
j = null;
这个是可以的,表示不指向任何值。
i[0] = new C();   
这个也是可以的  ,多态
作者: 夏天    时间: 2012-9-20 13:24
本帖最后由 夏诗瑶 于 2012-9-20 13:25 编辑

其实吧,上面同学都说了答案了。
但是,一可以编译通过,二不能编译通过很多人不理解。这里就简单介绍下:
一其实初始化了一个数组,数组里面放的是接口类型。并没有具体初始化到对象。

所以,一般自定义类型用数组初始化的时候都需要 初始化两次,例子如下:
class Person {
        private String name;
        private int age;

        public Person(String name, int age) {
                this.name = name;
                this.age = age;
        }

}

public class PersonTest {

        public static void main(String[] args) {
                Person[] ps = new Person[3];// 初始化用于存放3个人类型的数组

                ps[0] = new Person("张三", 15);//注意这:虽然上面"初始化化了三个人",但实际用到每个人的时候,还是要new对象的               
                ps[1] = new Person("李四", 16);
                ps[2] = new Person("王五", 17);

        }
}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2