Java 如何创建一个根据我拥有的不同类打印的方法?

Java 如何创建一个根据我拥有的不同类打印的方法?,java,Java,我还有3节课。医生是超级阶级。外科医生和儿科医生是亚类。每个类都有一个名为treatPatient的方法,用于打印语句。我为每个类重写了toString方法以打印类名,也为子类重写了println语句。外科医生类还有一个println语句。我需要在上面写的主方法之后创建一个方法。这与多态性有关,所以我很困惑。我想在这里写的方法将接受一个超类Doctor类型的参数。所以它应该为博士班打印资料。然后它应该打印出外科医生课的资料。然后它应该打印出儿科医生的资料。那么我该如何编写这个方法呢。像这样 pu

我还有3节课。医生是超级阶级。外科医生和儿科医生是亚类。每个类都有一个名为treatPatient的方法,用于打印语句。我为每个类重写了toString方法以打印类名,也为子类重写了println语句。外科医生类还有一个println语句。我需要在上面写的主方法之后创建一个方法。这与多态性有关,所以我很困惑。我想在这里写的方法将接受一个超类Doctor类型的参数。所以它应该为博士班打印资料。然后它应该打印出外科医生课的资料。然后它应该打印出儿科医生的资料。那么我该如何编写这个方法呢。像这样

public class TestDoctor{
    public static void main(String[] args){
        Doctor doc = new Doctor();
        Doctor surg = new Surgeon();
        Doctor ped = new Pediatrician();
    }
}

还有,我如何将外科医生类中的另一个方法也转换到这个方法中。我被告知是if/then,使用instanceof,然后调用该方法。请帮忙。我在这里坐了几个小时,真的很辛苦:

我不太清楚你在问什么。但是有一些事情你可能想知道:当处理多态性时,你不需要担心调用哪个方法。请参见以下示例:

public void docMethod(Doctor x){
   x.toString();
   x.treatPatient();
}
因此,如果您已经覆盖了这些方法,那么多态性会实现您所期望的,因为我理解您的问题是正确的

无论如何,如果您有一个方法,例如医生类中不存在的外科医生,但仍要使用发布的方法,则可以使用instanceof对医生对象调用该方法:

public void docMethod(Doctor x){
   x.toString();
   x.treatPatient();
}

public void doSomething() {
    docMethod(new Doctor()); //calls toString() and treatPatient() for the doctor
    docMethod(new Surgeon()); //calls those methods that are overwritten in surgeon
    //and so on
}

但是请记住,在您的上下文中使用instanceof可能会非常混乱。

您附加的方法docMethod正是我认为您想要这样做的原因。你只需要调用doc的方法,然后调用surg和ped。谢谢。我仍然不明白为什么它不起作用。对我来说,在一瞬间后施放是个问题。
public void docMethod(Doctor x){
   x.toString();
   x.treatPatient();
   if (x instanceof Surgeon) {
      //Do something only surgeons can do
   }
}