Board logo

标题: 《java入门123》 使用多态构建车队的的一点疑问 请高手解答 [打印本页]

作者: qianhang1990    时间: 2011-12-29 14:31     标题: 《java入门123》 使用多态构建车队的的一点疑问 请高手解答

首先,先感谢笔者编写的这本书,确实是零基础入门的好书,让我这样一个初学者也能很容易看懂。另外,毕竟之前没有任何编程基础,所以对于书中的知识还是有点疑问

首先,这个是书中的车队类
package com.javaeasy.polymorphism;

import com.javaeasy.override.CarBase;

public class CarGroup {
        public CarBase leadingCar;// 领队车
        public CarBase[] followingCars;// 随从车

        public CarGroup(CarBase leadingCar, CarBase[] followingCars) {//构造方法,不允许空构造方法
                this.leadingCar = leadingCar;
                this.followingCars = followingCars;
        }

        public void speedUp(int p_speed) {// 车队的加速方法,首先让领队车加速,然后让其余车跟进
                leadingCar.speedUp(p_speed);
                for (int i = 0; i < followingCars.length; i++) {
                        followingCars[i].followSpeed(leadingCar);
                }
        }

        public void slowDown(int p_speed) {// 车队的减速方法,首先让领队车减速,然后让其余车跟进
                leadingCar.slowDown(p_speed);
                for (int i = 0; i < followingCars.length; i++) {
                        followingCars[i].followSpeed(leadingCar);
                }
        }

}


然后下面是使用车队类的例程
package com.javaeasy.polymorphism;

import com.javaeasy.override.Bus;
import com.javaeasy.override.CarBase;
import com.javaeasy.override.ElectronicBus;
import com.javaeasy.override.SportsCar;

public class UseCarGroup {
        public static void main(String[] args) {
                CarBase leading = new SportsCar();
                CarBase[] followingCars = new CarBase[] { new CarBase(),
                                new SportsCar(), new Bus(), new ElectronicBus() };
                CarGroup group = new CarGroup(leading, followingCars);
                group.speedUp(50);
                group.slowDown(10);
        }
}

对于上面调用车队类的例程中,有2点不明白。

1、CarBase[] followingCars = new CarBase[] { new CarBase(),new SportsCar(), new Bus(), new ElectronicBus() };

按照之前创建数组并给数组赋值的内容中,应该是  CarBase[] followingCars = { new CarBase(),new SportsCar(), new Bus(), new ElectronicBus() }; 这样的。   也就是没有“new CarBase[]”   这个的,请问下,上面这段代码中加不加“new CarBase[]”   是不是都是一样的,对创建数组没影响?

2、CarGroup group = new CarGroup(leading, followingCars);  这段代码。我知道这是创建一个车队对象。但是和之前创建对象不同的是,这段代码的小括号中多了leading, followingCars这两个参数。请问一下,为什么可以在括号内添加参数?多了这两个参数有什么用?

初学者,问题可能小白了点,谢谢高手解答
作者: deepnighttwo    时间: 2011-12-30 09:59

1# qianhang1990
1)有没有new CarBase[]对创建数组唯一的影响就是,数组会少一个元素。你可以看一下关于数组创建的内容。数组创建可以使用中括号内加数字的方式指定大小,也可以中括号后加大括号,并在大括号内指定元素的方式,既给数组确定了大小,也给数组的元素赋了值。

2)这个是构造方法的参数,和普通方法的参数意义一样,就是给这个方法执行的时候提供参数。
作者: qianhang1990    时间: 2011-12-30 12:33

2# deepnighttwo


好的。谢谢斑竹




欢迎光临 万卷图书 (http://wanjuanchina.net/) Powered by Discuz! 7.0.0