关于案例中的一些疑问(3个)!

来源:4-6 学生选课—课程查询

天涯蝶舞

2015-12-27 22:06

Course temp5 = (Course) coursesToSelect.get(2);

Course temp6 = (Course) coursesToSelect.get(3);

System.out.println("添加了两门课程:" + temp5.id + ":" + 

temp5.name + ";" + temp6.id + ":" + temp6.name);

为什么不能直接写成(Course) coursesToSelect.get(4).id和(Course) coursesToSelect.get(4).name直接获取id和name呢?会提示id和nameid cannot be resolved or is not a field?

 

另外Course类中为什么要创建一个空的构造器呢?可以去掉吗?

public Course(String id, String name) {

this.id = id ;

this.name = name;

}

public Course() {    //空的构造体    

}

 

ListTest类中的构造方器的意思和作用是什么,没太看明白!

public ListTest() {

this.coursesToSelect = new ArrayList();

}


写回答 关注

3回答

  • _泥人_
    2015-12-27 22:59:30
    已采纳

    1、((Course) coursesToSelect.get(4)).id,再加一对括号。

    2、Course的子类要调用这个空的构造体,没有子类的话可以不用。(看编程习惯,一般都是要有的)。

    3、在构造器里写的东西,都是会在创建这个类的对象的时候执行的,这里的意思是,在创建这个ListTest类时,new一个新的List给当前类的List。

    新手,如果有什么错误的请指正,共同学习。

    _泥人_ 回复天涯蝶舞

    2、coursesToSelect本来是ListTest类中的一个属性,什么时候给他实例化的呢?就是什么时候让他变成了一个ArraysList集合了呢?对!你猜的没错,自动执行了他的无参构造,实例化了coursesToSelect,让他便成了一个集合。关于List和ArraysList我研究的也不是很深,List是一个接口,所以他不能直接被new,ArraysList是List接口一个重要的实现类。

    2015-12-29 10:19:06

    共 3 条回复 >

  • 糖醋肉3984350
    2016-09-30 15:24:09

    List是一个接口,接口中的方法都是抽象方法,是没有方法体的。必须借助ArraysList来实例化。

  • 产品经理不是经理
    2015-12-27 23:06:44

    空的构造器可以省去不写,在没有自己定义构造器的时候,虚拟机会自动加上它。但是一个好的编程习惯就是自己把它写出来,因为继承它的子类的构造方法会去调用父类空参的构造器,如果我们在父类中定义了带参数的构造器,那么在编译子类的时候就有可能出错。

Java入门第三季

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

409792 学习 · 4340 问题

查看课程

相似问题