为子类设置超类属性

Sha*_*ded 3 java oop inheritance

所以我有一个问题让我的属性在超类类型场景中正确设置.

我有2个类,因此B类是A类的专用版本,让我们说......

public class A {
    private String name;
    private int id;
    ...
} 

public class B extends A {
    private Date time;
    private int status;
    ...
}
Run Code Online (Sandbox Code Playgroud)

现在我要做的是使用一个方法,用于从结果集中设置A中的属性,而是将它们设置在B的实例中.

public A setProperties(ResultSet rs) {
    A a = new A();
    a.setName(rs.getString(...));
    ...
    return a;
}
Run Code Online (Sandbox Code Playgroud)

我试过从这里拿回来并把它作为B投射,但当然不是所有的A都是B的......所以这不起作用.我还尝试在setProperties方法中添加另一个参数,以便它接收A并返回A,这样我就可以使用多态来获取我的B,但随后我的所有值都被清空了.

我在这里不知所措,任何建议都非常感谢.

mre*_*mre 6

在超类中声明方法.子类将重写此方法然后调用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);
    }
}
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅使用关键字super.