2012-07-22 3 views
0

나는 파일 클래스 (java.io.File)를 확장하는 클래스를 생성하고 인터페이스를 아래와 같이 의 TreeNode를 구현하기 위해 노력 :자바 오버라이드 충돌 다른 반환 형식과 같은 이름은

public class mTreeNode extends File implements TreeNode{} 

하고 구현하는 노력 TreeNode 메서드가 충돌했지만 충돌이 발생했습니다. 파일 클래스

public String getParent(){}는 반환 형식에 public TreeNode getParent() TreeNode를 에 인터페이스와 충돌이 있습니다.

어떻게 해결할 수 있습니까? (예를 들어 반환 유형에 Object 클래스를 사용할 수없는 이유)

마지막으로 클래스에 파일 객체를 사용하기로 결정했습니다.

+5

어떻게 해결할 수 있을까요? 반환 유형을 일치 시키십시오. – Mysticial

+0

어떤 Java 버전입니까? TreeNode의 코드는 무엇입니까? – TofuBeer

+0

Google [상속 대 구성] (https://www.google.co.in/search?q=inheritance+vs+composition) – Jomoos

답변

2

TreeNode이 인터페이스이기 때문에 정확도로 서명을 사용하여 해당 메소드를 구현해야합니다. 이것은 컴파일러에 의해 강제되는 외부 세계와이를 구현하는 클래스 사이의 계약입니다.

인터페이스를 구현하는 것이 here.

1

클래스가 covariant return types를 선언 할 수있다에 대해 당신은 자세한 내용을보실 수 있습니다. 따라서 인터페이스를 구현하는 클래스의 반환 유형은 인터페이스와 일치하거나 인터페이스의 하위 클래스 여야합니다.

class Foo { 
    public String toString() { 
     return "foo"; 
    } 
} 

interface Interface { 
    Foo getFoo();  
} 

class Bar extends Foo { 
    public String toString() { 
     return "bar"; 
    } 
} 

class Concrete implements Interface { 
    public Bar getFoo() { // <============= Covariant return type 
     return new Bar(); 
    } 
} 

public class Example { 
    public static void main(String[] args) { 
     System.out.println(new Concrete().getFoo()); 
    } 
} 

클래스는 bar을 인쇄합니다.