猿问

Go的界面编程模型与OOP相比如何?

我已经阅读了大部分Go导游教程,但仍不清楚Go的界面编程模型与OOP相比如何?

有人可以解释我如何开始“去思考”吗?

我很困惑如何定义一个接口,然后基于该接口创建对象?

Go会在编译期间为您隐式创建一个具体的实现吗?


SMILET
浏览 187回答 3
3回答

米琪卡哇伊

OOP通常试图解决的问题之一是多态性,即两个不同类具有行为相同的实例的能力。通常在OOP中,这是通过使用继承来完成的。基类定义其他类扩展的最小接口。基类的所有子类都可以用作基类。Go不是通过继承而是通过接口来执行相同的操作。接口是行为的“描述”。通过实现接口中描述的每种方法,由Go中的各个Type来满足此描述。如果一个类型没有实现所有的接口,那么它会自动满足所描述的接口中的方法,可以投由编译器自动到该接口。

ABOUTYOU

传统(Java)OO是关于类层次结构的。您可以使用类,一些抽象的,一些final的和接口来对您的问题进行建模。然后,您提供实现。Go使您可以走另一条路:从具体类型开始并实现您的逻辑。如果有用的抽象出现或需要:将其打包到一个接口中,并重构您的代码以使用此接口类型。
随时随地看视频慕课网APP

相关分类

Go
我要回答