2017-02-20 1 views
-2

그래, 나는 자바를 처음 사용하기 때문에 어리석은 질문 일 수있다. 내 수퍼 클래스에는 일반 Object를 가져 와서 Object를 반환하는 메서드가 있습니다. 내 하위 클래스에서 다른 곳에서 정의한 추상 클래스를 반환하는 메서드를 재정의하거나 좁히려 고합니다. 본질적으로이 오버라이드가 수행해야하는 모든 작업은 동일한 메소드를 수행하지만 객체가 더 좁은 클래스로 대체 된 것입니다. 어떻게해야합니까? 그것은 단지 한 줄 또는 두 개의 코드가 있어야하지만, 나는 그것에 대한 구문을 모른다.자바. 메서드 오버라이드 및 리턴 타입을 좁히기

그래서 슈퍼 클래스 푸에이 방법 같은 그런 다음

public abstract class Foo { 
    public Object doSomething() { 
     Object objVar; 
     //does stuff to objVar 
     return objVar; 
    } 
} 

은 diff 자바 파일에서 객체의 생성자 : 하위 클래스에서 다음

public abstract class Zee { 
    //constructors & methods for zee 
} 

:

public class Subbie extends Foo { 
    @Override 
    public Zee doSomething() { //covariant return type?? maybe? 


    return //needs to preform the same actions 
      //as the super doSomething method, but with 
      //the narrower return type. 
    } 
} 
+3

코드를 표시하거나 아무도 도움을받을 수 없습니다. 게시물을 [편집]하고 질문을 시연하는 [mcve]를 포함하십시오. –

답변

0
  1. ret 좁히기 구문을 확인하려면 항아리 형은이를 참조하십시오 Can overridden methods differ in return type? 당신은 추상 클래스의 객체를 인스턴스화 할 수 없습니다 super.doSomething()

  2. 부모 클래스의 사용에서 메소드를 호출하기 위해

  3. (기본적으로이 권리를하고있는). 확장하고 확장 클래스의 객체를 반환해야합니다.

관련 문제