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를 가지고 있고이의 반환 타입을 가진 메소드가있는 경우 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*/
언제든지 감사드립니다. 시간 내 주셔서 감사합니다.
지금까지, 당신이 말한 모든 것이 올바른 것으로 나타나는 A.에게 단지
return b;
때문이다. ...하지만 문제는 무엇입니까? – BRFennPocock'B'가'A'의 서브 클래스라면'A'에 캐스트 할 필요가 없습니다. 'return b; '로 충분해야합니다. – Thomas