クラスパラメータとしてのメソッドdummy
がA
ありますが、サブクラスのインスタンスをそのメソッドに渡す必要があります B
。私は知っています:
Javaキャスティングはオーバーヘッドをもたらしますか? なんで?
Javaでのダウンキャストにはオーバーヘッドがあります。私のコードのほとんどはサブクラスを扱ってB
いるので、この目的でダウンキャストを使用していません。代わりに、その目的のために一時的なインスタンス変数を使用しますcc
。しかし、これはサブクラスのオブジェクトを変更するものではありませんm
。cc
インスタンス variable についても、利用可能な変数を変更する必要がありますm
。これは私のコードです:
public class TestCast {
public TestCast() {
B m = new B(12, 3);
dummy(m);
A cc = m;
dummy(cc);
System.out.println(m.a);
System.out.println(cc.a);
}
public void dummy(A t) {
t.a = 22222;
}
public static void main(String[] args) {
new TestCast();
}
}
class A {
public int a = 0;
public A(int a) {
this.a = a;
}
}
class B extends A {
public int a;
public int b;
public B(int a, int b) {
super(a);
this.a = a;
this.b = b;
}
}
出力あり
12
22222