2011-12-21 5 views
0

Привет, я немного чем-то смущен.Листинг/ссылка?

Допустим, у меня есть класс A и B. А супер класс B. Если у меня есть метод, который имеет тип возвращаемого значения, я могу использовать это в качестве возвращаемого значения:

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; 
    } 
} 

Так что значение, возвращаемое 'geta()', будет ссылкой на экземпляр 'b' cast как A, так что, например, если 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

Обратите внимание, что вам не нужен приведение к 'A', если' B' является подклассом 'A'. 'return b;' должно быть достаточно. – Thomas

ответ

5

гэта может просто return b; так как Ь является A.

+0

wow Мне действительно нужно отдохнуть – AlexRamallo