如何从父类到达子类((java语言)

eiee3dmh  于 2021-07-03  发布在  Java
关注(0)|答案(2)|浏览(271)

我有5个不同的班级。这些是座位,座位,预约。aseat、bseat、cseat正在继承seat类。约会类决定选择哪个类(aseat、bseat、cseat)。假设value(jobtype)等于1,我们得到aseat作为参数,如果它等于2bseat作为参数,如果它等于3,我们得到cseat作为参数。
我试过下面这样的代码,但没用
我该怎么做?
来自约会类(构造函数)的示例代码:

public Appointment(jobType,Seat seat) {
   if(jobtype==1){
       seat.ASeat.function1();
      }
}

我想通过一个jobtype来定义类,我在下面写了几个例子来更好地理解它

public Appointment(1,ASeat aseat) {

       ASeat.function1();

}
public Appointment(2,BSeat bseat) {

       bseat.function2();

}
public Appointment(3,CSeat cseat) {

       cseat.function3();

}

如果我用下面的方法。那就太不必要了

public Appointment(Dentist dentist, Patient patient,int jobType,ASeat aseat,BSeat bseat,CSeat cseat) {
if(jobType==1){
            aseat.function1();
}
if(jobType==2){
            bseat.function2();
}
if(jobType==3){
            cseat.function3();
}
}
2w3rbyxf

2w3rbyxf1#

感觉就像你想使用factorypattern。
这里定义了一个明确的例子:
https://www.tutorialspoint.com/design_pattern/factory_pattern.htm

c6ubokkw

c6ubokkw2#

如果我理解正确的话,所有子类都有一个具有相同签名的方法,您希望调用该方法。
如果要调用它,需要在超类中提取它并重写它:

public class Seat{
    public void function(){
        throw new UnsupportedOperationException ("Not implemented for superclass");
    }
}

public class ASeat extends Seat{
    @Override
    public void function(){
        //Your code
    }
}
//where you call it
seat.function();

如果超类是抽象的,甚至可以使用抽象方法:

public abstract class Seat{
    public abstract void function();
}

public class ASeat extends Seat{
    @Override
    public void function(){
        //Your code
    }
}
//where you call it
seat.function();

相关问题