0
こんにちは私は何かについて少し混乱しています。インスタンス/参照をキャストしますか?
public class test{
private B b;//remember: A is super class of B so 'public class B extends A'
public test(){
b = new B();
}
public A geta(){
return (A)b;
}
}
:
は、私はクラスAを持っていると私はAの戻り値の型を持つメソッドを持っている場合B. AはBのスーパークラスであると言うことができます、私は戻り値としてこれを使用することができますそのため、 'geta()'によって返される値は 'b'のインスタンスへの参照となります。たとえば、Aに変数Xがあり、Bに変数Yがある場合、これを行うことができます:
test t = new test(); //t.b.X = 5 and t.b.y = 10
A a = t.geta();
a.X = 20 /*This will change the value of X in the instance of B, b, of t...
in other words, t.b.X will also equal 20*/
ご協力いただきありがとうございます。
であることができ、あなたが言ったすべてが正しいように見えます。 ...しかし、何が問題なのですか? – BRFennPocock
'B'が' A'のサブクラスであれば、 'A'にキャストする必要はないことに注意してください。 'return b;'で十分でしょう。 – Thomas