次のコードがあるとしましょう
public class SuperClass {
protected int super_class_value;
public SuperClass (int value) {
this.super_class_value = value;
}
}
public class Subclass extends SuperClass {
protected int subclass_value;
public SubClass(int super_class_value, int subclass_value) {
super(super_class_value);
this.subclass_value = subclass_value;
}
}
ただし、今は SuperClass オブジェクトを SubClass コンストラクターに渡すことができるようにしたいと考えています。どうすればいいですか?
public SubClass(SuperClass super_class, int subclass_value) {
//What do I do here?
this.subclass_value = subclass_value;
}
基本的に、私はこのようなことをしたい...
public SubClass(SuperClass super_calss, int subclass_value) {
super(super_class.super_class_value);
this.subclass_value = subclass_value;
}
しかし、SuperClass がより複雑な場合、super() 呼び出しに各値を追加したくありません。代わりに、既に存在するオブジェクトを単純に渡し、それをスーパー クラスとして使用したいと考えています。
私はこれをしたい...
public SubClass(SuperClass super_class, int subclass_value) {
super(super_class);
this.subclass_value = subclass_value;
}
しかし、それが許可されているかどうかはわかりませんか?
SuperClass 定義にコンストラクターを追加すると、上記のことができるようです。しかし、それはどのように見えるでしょうか?
public class SuperClass {
protected int super_class_value;
public SuperClass (int value) {
this.super_class_value = value;
}
public SuperClass (SuperClass super_class_object) {
//What is done here?
}
}