我是Java程序员,正在学习使用Go语言编程。到目前为止,我真的很喜欢这种语言。比Java多得多。
但是有一件事我有点困惑。Java具有接口,因为类只能从一个类继承。由于Go允许多重继承,所以接口的意义是什么?
多态性
接口使函数具有“占位符”参数,该参数可以采用不同的结构作为参数。例如,如果结构Man,Woman,Child实现了Human接口,则参数为Human的方法可以将Man,Woman,Child结构中的任何一个作为参数。因此,只要接口参数实现接口中定义的所有功能,它就可以“变形”为作为参数传递的任何结构。
这很重要,因为接口是Go中实现多态性的唯一方法,因为它没有继承。因此,如果Man(通过将其作为匿名字段)“扩展”了Human,则任何将Human用作参数的方法都将无法将Man作为参数。
我的困惑源于这样的事实,即继承也是Java中实现多态性的一种方式,我认为在这种情况下也是如此。我纠正了!
问题内容: 我认为多重继承在Java中总是非法的,但是这段代码可以编译: 是否有一个空接口,例如被认为是不好的做法?有没有一种方法可以避免空接口(使用泛型或其他方式)实现相似的目的? 注意:我不是在问如何通过接口模拟多重继承。我意识到我可以执行以下操作: 由于各种原因,我需要同时具有这两种方法的接口。 问题答案: 实现的 多重继承是不允许的。组件可以继承多个接口。 继承多个接口没有问题,因为您只是
问题内容: 我试图了解Java的行为。使用此接口: 我正在重载这样的方法: 当使用以下对象调用方法时: Java为什么使用: 代替 ? 谢谢 问题答案: 因为编译器只知道是的实例。在编译时根据所涉及表达式的编译时类型确定重载,并且is 的编译时类型为。 (将此与覆盖进行比较,在覆盖时,将根据所涉及的实际类型在 执行 时选择方法实现。)
问题内容: 我对此事仍然有些困惑。我到目前为止发现的是 (这里已经问过类似的问题,但我还有其他几点。) 接口是仅抽象方法和最终字段的集合。 Java中没有多重继承。 接口可以用于在Java中实现多重继承。 继承的一个强项是我们可以在派生类中使用基类的代码,而无需再次编写。可能这是继承在那里最重要的事情。 现在.. Q1。由于接口仅具有抽象方法(无代码),因此,如果我们实现任何接口,那么该如何继承呢
问题内容: 接口允许您创建定义实现它的类的方法的代码。但是,您不能向这些方法添加任何代码。 抽象类使您可以做同样的事情,并向方法中添加代码。 现在,如果您可以使用抽象类实现相同的目标,为什么我们甚至需要接口的概念? 有人告诉我,它与从C ++到Java的OO理论有关,这是PHP的OO东西所基于的。这个概念在Java中有用但在PHP中没有用吗?这只是一种避免在抽象类中乱扔占位符的方法吗?我想念什么吗
问题内容: Java不允许多重继承,但是它允许实现多个接口。为什么? 问题答案: 因为接口只指定什么类是做,而不是如何它是做什么的。 多重继承的问题在于,两个类可能定义不同的方式来做同一件事,而子类无法选择该选择哪一个。
问题内容: 定义如下: 定义如下: 为什么要重新定义?并且由于它在界面中,如何重新定义它? 问题答案: 在Java 1.3中,添加了所有功能之后,它仅与无关,而与的其他实现无关。这样-这是 不 存在于和被定义。界面中还有其他3个选项。(英语Javadoc不再在线,尽管仍然可以下载,所以这里没有参考。如果搜索“ WindowConstants Java 1.3”,您将获得日语版的Javadoc-但由