函数返回接口意味着什么?
收藏

我刚刚看到了这样的成员函数:

public Cat nextCat(GameState state); 

但是Cat是这样的接口:

public interface Cat {
        void makeCat(GameState state);
}

因此,我对如何解释这一点感到困惑。我知道什么东西返回一个对象或原语。但是返回接口意味着什么?如何使用此函数的返回值?

最佳答案

Think about this way: If Cat where a regular class, what exactly would you care about when you wanted to call some methods on it?

您会关心方法定义:它们的名称,它们的参数类型,它们的返回值。您无需关心实际的实现!

由于接口提供了所有这些功能,因此您可以像在常规类上一样在其上调用方法。

当然,为了使该方法实际返回某个对象,需要在某个地方实现某个类来实现该接口。但是,实际上是什么类或如何实现这些方法与返回该对象的代码无关紧要。

换句话说,您可以编写如下代码:

Cat cat = nextCat(GameState.STUFF);
cat.makeCat(GameState.OTHER_STUFF);

That code has no knowledge of the concrete type that implements the Cat interface, but it knows that the object can do everything that the Cat interface requires.

    公众号
    关注公众号订阅更多技术干货!