问答详情
源自:4-4 学生选课---添加课程 Ⅰ

这样理解有错吗?求指教

实例中:Course类中有int-ID,和String-name两个属性。

在ListTest类中,先定义一个属性是public List coursesTOSelect;定义一个public开放性,List接


口类型,名称coursesToSelect的属性(成员、变量)。因为List只是一个接口,里面只有抽象的方法


,不能具体实现,所以指向了ArrayList类的功能。同时ArrayList类里面也已经将List接口中的方法


实现化包含了。符合接口定义的抽象方法规范必须实现这一规则。

创建构造方法:public ListTest(){this.coursesToSelect = ArrayList();}

方便创建一个List类型coursesToSelect属性指向ArrayList新对象时重复书写代码,可以直接调用。

因为是构造方法ListTest类本身,所以构建类对象本身的时候,就会运作此段代码。


public void testAdd(){/*此方法创建一个课程对象,并通过调用add方法,添加到备选课程List中*/

   Course cr1 = new Course("1","数据结构");/*创建一个课程类的对象并输入参数*/

   coursesToSelect.add(cr1);/*把创建好的课程类的对象cr1,用List类型功能指向ArrayList的变


量courseToSelect,运用ArrayList的方法.add,加入到变量中去*/

   Course temp = (Course)coursesToSelect.get(0);/*cr1对象创建的时候本来是Course类型,因为


通过List-ArrayList.add加入到它们的变量中corsesToSelect中去,是集合之中的其中一员类型随之


已转化为Object是所有类的父类,最为原始的类,取出来调用,需要重新定义声明一个Course类的对


象temp进行存放,并将其强制转化为Course类,因为本来原始数据就是Course类,所以转化过程中不


会有溢出或者出错,get的参数值为0是下标,带有数组的特性,首个数据存放容器地址是0,跟数组的


不同之处是,数组定义的长度是既定的,而且不去进行改动容器中的数据和对应的下标是不会有改动


。List-ArrayList中的数据和下标是会随之新添加的新对象而进行递增的,添加时不进行特定操作默


认添加下标为0,原本在0下标的数据自动推进位置+1,整个List-ArrayList属性容量也会+1,值得一


提的是在新添加对象的时候,新添加指定下标位置不能超过原有的长度,只能在头部尾部或中间位置


插入,不能在头部之前或尾部之后进行操作*/

   System.out.println("添加了课程:"+temp.id+":"+temp.name);/*输出重新定义的对象temp中的


属性*/

}


提问者:见习学徒戴株 2014-12-21 14:46

个回答

  • 小肠杆君
    2015-05-11 22:31:01

    理解的不错。ArrayList类是接口List的一个实现类,List接口主要是提供某些方法的定义,而ArrayList类用自己的方式实现了接口List中定义的方法,所以ArrayList类定义的对象都能实现接口List定义的方法。所以在实例化时候,是对List接口的实现类ArrayList运行其构造函数,即this.coursesToSelect = ArrayList()。

  • 仗剑闯江湖
    2014-12-21 15:35:20

    太多了没看完。

    这一行有错public ListTest(){this.coursesToSelect = ArrayList();},

    ArrayList()是ArrayList类的构造函数,要调用这个函数创建ArrayList类的对象,需要new关键字,这个构造函数跟普通方法的区别。