父类中返回java中子类的方法

时间:2014-03-06 11:52:34

标签: java inheritance

我有一个父类Product和一些子类,如CameraTV等... 现在我想在Product中创建一个方法,根据从db中获取的对象(我有很多子类),从db公共属性获取所有子节点并返回子节点的实例。 是否有可能做到这一点?如果是的话,你能告诉我一个小例子吗?

我的想法是从子类中的类似方法调用此方法,然后从db中获取所有这些非常见属性。

3 个答案:

答案 0 :(得分:1)

首先,您似乎想将db访问代码放入您的类中,我不建议这样做。

至于你的真正问题:尝试使用ORB框架,如EclipseLink或Hibernate。这些使用鉴别器列来确定实体的实际类,并为您创建和填充实例。作为替代方案(如果您可以决定数据库),您还可以查看ObjectDB

答案 1 :(得分:0)

答案 2 :(得分:0)

public class Product{
    int productId;

    protected Product(int productId){ //avoid creating pure product objects
        this.productId = productId;
        //load all the common properties            
    }

    public Product getProduct(int productId){
        // read the product with productId from the table
        // identify the type of the product
        String type = .... (assume its "camera")
        if("camera".equals(type)){
            return new Camera(productId);
        } 
    }
}

在子类中,

public class Camera extends Product{
    public Camera(int productId){
        super(productId);
    }
}

用法

Product p = Product.getProduct(4025);

该方法将从数据库加载相关字段,识别产品类型,根据产品类型创建子类对象并调用其构造函数。

子类的构造函数调用超类构造函数。 超类构造函数加载所有公共属性。