1.为什么要初始化属性students 属性不是应该赋值吗 this.students=new ArrayList<String,Student>(); 有什么用 为什么这么用 是什么意思 2.public Map<String,Student>students; 声明属性我懂 为什么用Map类型 不是说Map是接口吗 不应该是int char string 这种类型吗 3.Student st=students.get(ID); 为什么属性.get() 可以调用get方法 不应该是对象名.get 或者类名.get吗 不知道我是不是知识点没记住 但我好像没忘记什么啊 但就是想不通
this
.students=
new
ArrayList<String,Student>();这一步就是为属性赋值的操作,因为map是一个类,它声明的是一个对象的引用,这一步:
new
ArrayList
就是将一个对象实例化,然后将对象的地址赋值给students这个对象的引用上的。然后我们通常把这一步操作叫做利用构造器为属性初始化
map声明的是对象的引用,并不是用map去实例化一个对象,我们知道多态是可以利用父类来声明对象的引用从而指向子类实例化的对象的,这里就是通过接口声明了一个map对象的引用,然后用它指向一个实现了map对象的子类的对象
虽然这里的students是一个属性,但是他是一个保存着对象地址的属性,所以用它:students。get()方法实际上是用它所指向的那个对象进行get()方法。
以上就是我的理解,可能有些说的不够透彻。不过如果有问题或者有更好的理解可以及时回复,大家共同进步。
因为Map是接口,所以不能实例化 ,只能实例化HashMap;
因为students的类型是Map,Map里面 有get方法,所以可以students.get();
个人观点。。
Map的映射,key-value,==>String-Student