スーパークラスタイプのシナリオでプロパティを正しく設定するには、少し問題があります。サブクラスのスーパークラスプロパティを設定する
私は
public class A {
private String name;
private int id;
...
}
public class B extends A {
private Date time;
private int status;
...
}
...さんは言わせ、クラスBがクラスAの特殊なバージョンであるような2つのクラスを持っている今、私は何をしようとしているプロパティを設定するために使用されるメソッドを使用しています結果セットからAに、代わりB.
public A setProperties(ResultSet rs) {
A a = new A();
a.setName(rs.getString(...));
...
return a;
}
のインスタンスでそれらを設定し、私はこれからのリターンを取り、Bとしてそれをキャストしようとしているが、もちろん、すべてのAさんは、Bさんはありません...そうすることはできません。私はまた、setProperties
メソッドに別のパラメータを追加しようとしました。これは、Aを受け取り、Aを返します。そうすることで、多態性を使用してBを取得できますが、すべての値がNULLになりました。
私はここで迷っています。どんな提言も大変ありがとうございます。
私はこれを試してください。サブクラスのメソッドをオーバーライドしないと、スーパークラスのプロパティを設定することはできますか? – Shaded
右。サブクラスで 'setProperties'を明示的にオーバーライドせずにサブクラスインスタンスで引き続き呼び出すと、そのプロパティはスーパークラスに設定されます。 – mre
私はまだ問題があります。 'A.setProperties()'で名前を調べています。メソッドが返った後、私は 'B.setProperties()'でそれをもう一度チェックし、それはnullです。何かご意見は? – Shaded