2016-03-30 5 views
1

В настоящее время я работаю над проектом с двоичным деревом, а код для печати дерева был получен из репозитория.Как вернуть тип Интерфейс

Короче говоря, это будет распечатка в моем желаемом формате, если я смогу реализовать интерфейс в своем коде.

Однако для одного из них требуется необычный возврат класса интерфейса. (См ниже)

@Override 
public IBT getLeft() { 

    return null; 
} 

Это метод для получения левого поддерева, где IBT является Binary интерфейса дерева.

Это проще, чем я это делаю?

Любая помощь в возвращении интерфейсов?

+3

Вам нужно вернуть объект из класса, который реализует интерфейс. –

ответ

2

Метод getLeft может возвращать любой класс, который реализует (если это интерфейс) IBT или расширяет IBT (если это класс).


например. Скажем, у меня есть интерфейс Foo, и две реализации, Fizz и Buzz:

public interface Foo { } 

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

Fizz и Buzz класс теперь может быть использован вместо Foo, потому что они реализуют интерфейс Foo.

Теперь скажите, что у меня есть метод, который требует возврата Foo объектов.

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

Вы не можете непосредственно создавать Foo объект, поскольку он не является классом. Однако вы можете использовать классы Fizz и Buzz.

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

Удалось исправить мою проблему, что вызвало у меня горе. Узел в моем BT был подклассом двоичного дерева. Я разделил их на свои классы, и все было хорошо. THANK вы все – 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

Смежные вопросы