是否可以在界面中创建内部类?如果有可能我们为什么要创建这样的内部类,因为我们不打算创建任何接口对象?
这些内部类有助于任何开发过程吗?
我已经玩了一段时间Scala了,我知道traits可以作为Scala等同于接口和抽象类.如何将特征编译成Java字节码?
我发现了一些简短的解释,说明特征在可能的情况下编译完全类似于Java接口,否则与其他类接口.但是,我仍然不明白Scala如何实现类线性化,这是Java中没有的功能.
是否有一个很好的来源解释traits如何编译为Java字节码?
经过20多年的Java编程,我希望自己有多重继承.但我并非如此,我正在为这个具体问题寻找替代方案.
真正的应用程序是某种ERP,有点复杂,所以我试图将这个问题转化为汽车.这只是到目前为止,但这是我能做的最好的.
让我们从描述汽车可以做什么的界面开始:
public interface Car {
public String accelerate();
public String decelerate();
public String steerLeft();
public String steerRight();
}
Run Code Online (Sandbox Code Playgroud)
现在我们有一个基本的(但不是抽象的)实现:
public class BasicCar implements Car {
protected final String name;
public BasicCar( String name ) {
this.name = name;
}
// In the real word this method is important and does lots of stuff like calculations and caching
protected String doDrive( String how ) {
return name + " is " + how + "ing";
}
@Override
public String …Run Code Online (Sandbox Code Playgroud) 是否有为接口方法创建默认实现的首选方法或样式?假设我有一个常用的界面,在90%的情况下我想要的功能是相同的.
我的第一直觉是用静态方法创建一个具体的类.然后,当我想要默认功能时,我会将功能委托给静态方法.
这是一个简单的例子:
接口
public interface StuffDoer{
public abstract void doStuff();
}
Run Code Online (Sandbox Code Playgroud)
具体实施方法
public class ConcreteStuffDoer{
public static void doStuff(){
dosomestuff...
}
}
Run Code Online (Sandbox Code Playgroud)
使用默认功能的具体实现
public class MyClass implements StuffDoer{
public void doStuff(){
ConcreteSuffDoer.doStuff();
}
}
Run Code Online (Sandbox Code Playgroud)
这里有更好的方法吗?
编辑
在看到一些提议的解决方案后,我想我应该更清楚我的意图.本质上我试图解决Java不允许多重继承.另外要明确我不是要声明Java是否应该允许多重继承.我只是在寻找为实现接口的类创建默认方法实现的最佳方法.