- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
上下文
我最近遇到了这个 C# 提案 default interface methods我已经阅读了规范和更重要的是动机。可能我错过了什么,但动机有点让我讨厌。
接口(interface)和完全抽象类之间的唯一实际区别是 future 的类可以实现(因此是[IS A])多个接口(interface),但可以继承(因此是[IS A])仅来自一个抽象类,(以及所有后果)
我不清楚抽象类和具有默认方法的接口(interface)之间的确切区别是什么现在,除了我们可以使用默认方法将多重(实现)继承带入画面,这对于抽象类是不可能的。 (我不想打开问题/讨论是好是坏,这不是这里的主题)
不过讲的动机完全不同,三点:
问题
我的问题是真正的区别(或动机)是什么,或者我错过了什么?
最佳答案
他们在 Java 8 中添加了此功能。因此您可以添加 Java
标记并询问 Java 开发人员他们可以使用它做什么。它显然也存在于 Haskell
和 Scala
上。
我首先想到的是多重继承。由于一个类可以实现多个接口(interface),例如您可以解决 diamond problem .
在 Java 中,它们是这样做的:
public interface InterfaceA {
public default void foo() {
System.out.println("A -> foo()");
}
}
public interface InterfaceB {
public default void foo() {
System.out.println("B -> foo()");
}
}
private class Test implements InterfaceA, InterfaceB {
// Compilation error : "class Test inherits unrelated defaults for foo() from types InterfaceA and InterfaceB"
}
所以你要么实现方法(覆盖默认实现)要么调用 super
之一:
public class Test implements InterfaceA, InterfaceB {
public void foo() {
InterfaceB.super.foo();
}
}
关于java - 使用默认方法与抽象类的接口(interface),动机是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46539725/
为了了解 Redux 的动机,我阅读了官方链接 https://redux.js.org/introduction/motivation还有这个 stackoverflow 问题 Explain Re
您好,这个 firebase 函数曾经可以工作,但知道它现在工作时间更长了,我收到此错误消息 Function returned undefined, expected Promise or valu
我是一名优秀的程序员,十分优秀!