2016-03-30 88 views
1

我目前正在使用二叉樹進行項目工作,並且已經從存儲庫獲取用於打印出樹的代碼。如何返回類型接口

長話短說,如果我可以在我的代碼中實現一個接口,它將打印出我想要的格式。

但是其中的一個需要接口類的異常返回。 (見下文)

@Override 
public IBT getLeft() { 

    return null; 
} 

這是獲取左子樹的方法,其中IBT是二叉樹接口。

這是比我做它更簡單嗎?

返回接口的任何幫助?

+3

您需要從實現接口的類中返回一個對象。 –

回答

2

方法getLeft可以返回實現(如果它是一個接口)IBT或擴展IBT(如果它是一個類)的任何類。


例如,說我有接口Foo,和兩個實現,FizzBuzz

public interface Foo { } 

public class Fizz implements Foo {} 
public class Buzz implements Foo {} 

FizzBuzz類現在可以代替Foo使用,因爲它們實現Foo接口。

現在說我有一種方法,要求我返回Foo對象。

public interface Bar { 
    Foo getFoo(); 
    Foo getAnotherFoo(); 
} 

您不能直接創建一個Foo對象,因爲它不是一個類。但是,您可以使用FizzBuzz類。

public class BarImpl implements Bar { 
    @Override 
    public Foo getFoo() { 
     return new Fizz(); 
    } 
    @Override 
    public Foo getAnotherFoo() { 
     return new Buzz(); 
    } 
} 
+0

管理解決我的問題,導致我悲傷的東西是我的BT中的節點是二叉樹的子類。我把他們分成了自己的班級,一切都很好。 謝謝大家 – ReuyJ

+0

@ReuyJ很高興聽到它正在運行:) – flakes

0
interface Foo{void display();} 

public class TestFoo implements Foo 
{void display(){System.out.println(「Hello World」);} 

public static void main(String[] args){Foo foo = new TestFoo();foo.display();}} 

我認爲這是有幫助的。

+0

'TestFoo#display'需要爲'public',否則在分配較弱的訪問專用權時會出現編譯錯誤。你也應該使用'@ Override'註解 – flakes