2014-05-09 2 views
0

의 슈퍼 클래스 참조를 얻을하는 방법 자바 :내가 3 개 클래스가 서브 클래스

class Superclass을 ...

public class Generic{ 
    public Generic(Superclass s){...} 
} 

그리고 methodM에서 슈퍼 클래스

class SubClass extends Superclass{ 
     public void methodM(){ 
      Generic g = new Generic(???); 
      ... 
     } 
} 

을 확장 서브 클래스는 내가 생성자를 사용 Generic Subclass로 확장 된 Superclass 인스턴스에 대한 참조를 전달하려고합니다.

new Generic(super.IdontKnowWhat) 당신에게 감사합니다 (그것을 확장으로)

+4

그렇지 않으면 우리는 나쁜 디자인 냄새가 있기 때문에 구체적인 사용 사례를 가리켜 야합니다. – moonwave99

답변

1

현재 객체에 대한 참조뿐만 아니라 암시 적으로 슈퍼 클래스에 대한 참조입니다 : 그래서 내가 좋아하는 뭔가 오히려, new Generic(new Superclass) 같은 것을하고 싶지 않습니다. 슈퍼 슈퍼 클래스 필드를 참조하는 데 사용되는 붙박이 키워드가로

그래서 당신은

Generic g = new Generic(this); 
+0

고마워, 너무 간단했다는 것을 몰랐다. – raff5184

+0

Upvote 그리고 도움이된다면 동의해라. :) –

0

U는 수퍼 클래스를 확장 할 때 하위 클래스의 참조를 전달할 수 있습니다. 하지만 어떤 방법으로 원하는지에 따라 달라집니다. 하위 클래스에 대한 참조를 전달하면 하위 클래스의 메소드를 받아야합니다. 일반 클래스의 생성자에서. 그래서 수퍼 클래스의 메서드를 acssess 경우에 대비하여 수퍼 클래스의 새 개체를 구성해야합니다.