为子类设置超类属性



所以我有一点问题,让我的属性在一个超类类型的情况下正确设置。

我有两个类,使得类B是类a的特殊版本,假设…

public class A {
    private String name;
    private int id;
    ...
} 
public class B extends A {
    private Date time;
    private int status;
    ...
}

现在我要做的是使用一个方法,该方法用于从结果集设置a中的属性,而不是在b的实例中设置它们

public A setProperties(ResultSet rs) {
    A a = new A();
    a.setName(rs.getString(...));
    ...
    return a;
}

我试过从中得到回报,并将其转换为B,但当然不是所有的a都是B…所以这行不通。我还尝试向setProperties方法添加另一个参数,以便它接受A并返回A,这样我就可以使用多态性来获得我的B,但随后我的所有值都被空了。

我也不明白了,如果你有什么建议,我将不胜感激。

在父类中声明该方法。子类将重写此方法,然后调用super.foo(ResultSet rs),其中foo(...)是被重写的方法。在其中,您可以解析ResultSet并设置对象的字段。

,

class Foo{
    void setProperties(final ResultSet rs){
        // do stuff
    }
}
final class Bar extends Foo{
    @Override
    final void setProperties(final ResultSet rs){
        // do stuff
        super.setProperties(rs);
    }
}

有关详细信息,请参见使用关键字super。

最新更新