1 什么都不写等同static final, static要求初始化
2 这两个根本不是一个变量
3 Car[] car=new Car[4]; car的类型是Car[],new Car[4]不是new了4个Car,而是1个Car[]
2 这两个根本不是一个变量
3 Car[] car=new Car[4]; car的类型是Car[],new Car[4]不是new了4个Car,而是1个Car[]
2,不同类的变量虽然名字相同,但是它们属于不同类的所属(即内存位置不同)因此不发生冲突
3,Car[] car=new Car[4]; 这句并没有把接口实例化,仅能说是开辟了数组空间。可以向下面这么做
Car[] car=new Car[4];
for(int i=0;i<car.length;i++)
{
car[i] = new BmwX5();
}
1。因为是类的变量,在定义的时候就一定的初始化。
2。BmwX5是实现Car的类,那它并没有继承topSpeed变量。所以如果你用topSpeed=300;就会报一个没有定义的错,而你用int topSpeed=300;就是重新定义了个变量topSpeed和Car里的类变量topSpeed没有任何关系,只不过同名而已。
3。因为接口没有构造的方法,所以不能Car car=new Car();之所以能够Car[] car=new Car[4]; 可以是定义了一个能装四个实现Car接口的类的数组,但其内容都是null.好累:-)
2、这里的topSpeed是在BmwX5重新定义的(int topSpeed)。
3、第一个是定义数组长度(你也可以理解为new了一个含有四个接口的对象)
第二个是构造接口,而接口是不能构造的(抽象)