我说一下我的理解,类是抽象的,而对象是具体的,单说类的意义不大。而将类的对象放到集合中,准确的说是将对象的地址值放到了集合中。
就那你写的这个例子来说吧,你需要把学生对象放到List集合中,首先new一个学生对象出来,这样就会在堆内存开辟了一块空间,假如说它有一个地址值0x001,List的底层是数组结构,List的add()方法将学生对象放到集合中,实际上就相当于list集合中的一个索引记录了一个地址值0x001,完了这个地址值指向了刚才的学生对象。但是List的add(Object obj)方法默认的是Object类型的,你传一个学生对象进去就相当于做了这么一件事Object obj=new Student(); 这里会把学生对象自动提升为Object类型,这就是父类指向子类的引用(多态嘛)。如果你想访问学生对象中的方法,就需要遍历集合,返回的是Object,这里需要把Object转为Student就行了(向下转型),完了再通过学生对象.方法名来调用方法了 |