是否可以在界面中创建内部类?如果有可能我们为什么要创建这样的内部类,因为我们不打算创建任何接口对象?
这些内部类有助于任何开发过程吗?
假设我们有两个类, Tiger
并且Aeroplane
.这两种类型的一个共同点是速度.我知道,这将是不合逻辑创建一个超类ClassWithSpeed
,然后派生子类Aeroplane
,并Tiger
从它.相反,它是最好创建一个包含方法的接口speed()
,然后实现它Aeroplane
和Tiger
.我明白了.但是,如果没有接口,我们可以做同样的事情.我们可以定义方法speed()
中Aeroplane
和方法speed()
的Tiger
.唯一(也许是非常大的)缺陷是我们无法"到达" 接口引用的对象Tiger
并Aeroplane
通过接口引用.
我是Java和OOP的初学者,如果有人向我解释接口的作用,我将非常感激.干杯!
从Java 9会允许我们定义private
和private static
方法太接口,这将是在剩下的差异interface
和class
?而且,Java是否正在慢慢走向多重继承?
有没有办法在java中模拟mixins或traits?基本上,我需要一种方法来进行多重继承,因此我可以将常用的业务逻辑添加到多个类中
在哪种情况下接口可以嵌套类?
以下代码是允许且有效的.
public interface Iface {
void show();
class ifaceClass {
int x;
public ifaceClass() {
System.out.println(x);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我也在努力创建类ifaceClass的对象.
编辑:
我能够制作这样的物体
public class Test implements Iface {
public static void main(String[] args){
ifaceClass ifaceClassObj = new ifaceClass();
}
public void show() {
}
}
Run Code Online (Sandbox Code Playgroud)
我注意到如果Test
没有实现Iface
那么我需要在导入之后,
import com.jls.Iface.ifaceClass;
Run Code Online (Sandbox Code Playgroud)
但它归结为同样的问题,为什么不把它用作另一个类.
这种方法的差异或增值是什么?
我正在开发一个带有许多someInterface的项目 - someInterfaceImpl-pairs.前几天我得到了这个想法(可能是通过阅读一些客观的c代码来启发),将默认实现包含在内部类中.现在一些同事(都有比我更多的java经验)看到了这个想法 - 反馈是震惊和惊讶之间("这有用吗?").
我google了一下,但没有发现这个"模式"(个人我喜欢它)有用的证据: pdf-paper 和 关于代码风格的常见问题
您如何看待 - 特别是在"默认"实现紧密耦合到接口的情况下.
更新 我发现这个:Java接口 - 实现对
(见接受的答案)