我有一个名为ABC的接口。我也有一个抽象类PQR,有3个类扩展了这个抽象类。

例如:

abstract class PQR {
    //...
}

interface ABC {
    //other methods....
    PQR returnRightClass();
}

class X extends PQR {
}

class Y extends PQR {
}

class Z extends PQR {
}


现在有一些实现ABC接口的类。那么我该怎么做才能从X,Y和Z获得正确的类呢?

最佳答案

尽管建议尽可能多地使用接口,但返回抽象类没有错。如果可以将PQR设置为接口,则可以这样做。但是,如果没有,请放心。


  现在有一些实现ABC接口的类。所以呢
  我应该怎么做才能从x,y,z得到正确的类?


只要确保实现returnRightClass()的每个类中的每个ABC实现都返回PQR的正确实例(x,y或z)即可。

编辑

要回答您的问题:

public MyClassX implements ABC {

    public PQR returnRightClass() {
        return new x();
    }

}


要么

public MyClassY implements ABC {

    public PQR returnRightClass() {
        return new y();
    }

}


要么

public MyClassZ implements ABC {

    public PQR returnRightClass() {
        return new z();
    }

}

10-06 09:03