实例中: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中的
属性*/
}
理解的不错。ArrayList类是接口List的一个实现类,List接口主要是提供某些方法的定义,而ArrayList类用自己的方式实现了接口List中定义的方法,所以ArrayList类定义的对象都能实现接口List定义的方法。所以在实例化时候,是对List接口的实现类ArrayList运行其构造函数,即this.coursesToSelect = ArrayList()。
太多了没看完。
这一行有错public ListTest(){this.coursesToSelect = ArrayList();},
ArrayList()是ArrayList类的构造函数,要调用这个函数创建ArrayList类的对象,需要new关键字,这个构造函数跟普通方法的区别。