2011-12-21 7 views
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*/ 

ご協力いただきありがとうございます。

+4

であることができ、あなたが言ったすべてが正しいように見えます。 ...しかし、何が問題なのですか? – BRFennPocock

+0

'B'が' A'のサブクラスであれば、 'A'にキャストする必要はないことに注意してください。 'return b;'で十分でしょう。 – Thomas

答えて

5

下駄はちょうどreturn b; B以来、これまでのところA.

+0

私は本当に休憩を取る必要があります – AlexRamallo

関連する問題