老师给的例子是这样的:
public class DoctorTest{
public static void main(String[] args){
ArrayList<Doctor> dlist= new ArrayList<Doctor>();
dlist.add(new Doctor());
dlist.add(new FamilyDoctor());
for (Doctor d:dlist){
d.treatPatient();
d.giveAdvice();}}}打错和大小写忽略不计。
我建立了一个Doctor class和一个FamilyDoctor class,其中分别有treatPatient() method and giveAdvice() method,但dlist.add(new FamilyDoctor());显示错误。ArrayList<Doctor> 中的<Doctor>必须是一个class 吗?是不是引用了Doctor class就不能引用 FamilyDoctor class了?for (Doctor d:dlist)是什么意思?是相当于 Doctor d=new Doctor()不过是在dlist内部调用吗?

解决方案 »

  1.   

    ArrayList<Doctor> 中的<Doctor>必须是一个class 吗?是不是引用了Doctor class就不能引用 FamilyDoctor class了?这个涉及到泛型,其实可以引用FamilyDoctor的,不过LZ暂时就当是只能放Doctorfor (Doctor d:dlist)这个JAVA5新特性,叫foreach,意思和for(int i = 0;i<dlist.size();i++)一个意思
      

  2.   

    从代码来看, FamilyDoctor必须是继承于Doctor的, 也就是说, Doctor 必须是FamilyDoctor的父类. 这样, FamilyDoctor可以被隐式地转换成Doctor类.因为ArrayList<Doctor> dlist= new ArrayList<Doctor>(); 这段代码决定了dlist里面只能存Doctor类型的对象.
      

  3.   

    ArrayList<Doctor> 中的<Doctor>必须是一个class 吗?是不是引用了Doctor class就不能引用 FamilyDoctor class了?
    你的 FamilyDoctor 有 extends Doctor 吗
      

  4.   

    把FamilyDoctor继承Doctor就可以add了~for (Doctor d:dlist)就表示for(int i = 0; i < dlist.size(); i++){ d = dlist[i];}
      

  5.   

    1L,我大概明白了。
    2L,谢谢。
    3L,没EXTENS DOCTOR。还有,我怎么给你们分?点结贴就可以?