Java 如何返回类型接口

Java 如何返回类型接口,java,interface,binary-tree,Java,Interface,Binary Tree,我目前正在进行一个二叉树项目,从存储库中获取了打印树的代码 长话短说,如果我能在代码中实现接口,它将以我想要的格式打印出来 但是,其中之一需要异常返回接口类。(见下文) 这是获取左子树的方法,其中IBT是二叉树接口 这比我做的简单吗 返回接口是否有帮助?方法getLeft可以返回实现IBT(如果是接口)或扩展IBT(如果是类)的任何类 比如说。假设我有接口Foo,还有两个实现,Fizz和Buzz: public interface Foo { } public class Fizz impl

我目前正在进行一个二叉树项目,从存储库中获取了打印树的代码

长话短说,如果我能在代码中实现接口,它将以我想要的格式打印出来

但是,其中之一需要异常返回接口类。(见下文)

这是获取左子树的方法,其中IBT是二叉树接口

这比我做的简单吗


返回接口是否有帮助?

方法
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();
    }
}

我认为这很有帮助。

您需要从实现接口的类返回一个对象。
TestFoo#display
需要是
public
,否则在分配较弱的访问权限时会出现编译错误。您还应该使用
@Override
注释设法解决我的问题,导致我悲伤的是我的BT中的节点是二叉树的一个子类。我把他们分成了各自的班级,一切都很好。谢谢大家
public class BarImpl implements Bar {
    @Override
    public Foo getFoo() {
        return new Fizz();
    }
    @Override
    public Foo getAnotherFoo() {
        return new Buzz();
    }
}
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();}}