Nik*_*mar 3 java interface interface-implementation
我们可以在接口中拥有一个类,该类具有在其中实现的接口的不同方法吗?我在这里有一个疑问,为什么Java允许在接口内编写内部类以及我们可以在哪里使用它。
在下面的程序中,我在接口中编写了一个类并实现了接口的方法。在接口的实现类中,我刚刚调用了内部类方法。
public interface StrangeInterface
{
int a=10;int b=5;
void add();
void sub();
class Inner
{
void add()
{
int c=a+b;
System.out.println("After Addition:"+c);
}
void sub()
{
int c=a-b;
System.out.println("After Subtraction:"+c);
}
}
}
abstract public class StrangeInterfaceImpl implements I {
public static void main(String args[])
{
StrangInterface.Inner i=new StrangeInterface.Inner();
i.add();
i.sub();
}
}
Run Code Online (Sandbox Code Playgroud)
您可以在接口内定义类。在接口内部,内部类是隐式的public static
。
\n\n\n接口的主体可以声明接口的成员,即字段(\xc2\xa79.3)、方法(\xc2\xa79.4)、类(\xc2\xa79.5)和接口(\xc2 \xa79.5)。
\n
来自JLS 第 9.5 节:
\n\n\n\n\n接口可以包含成员类型声明(\xc2\xa78.5)。
\n\n接口中的成员类型声明是隐式 static 和 public 的。允许冗余地指定其中一个或两个修饰符。
\n
就此而言,对接口或任何其他类中定义的内部类的唯一限制是,您必须使用封闭的成员名称来访问它们。
\n除此之外,它们之间没有关系。\xc2\xa0内部类编译后会产生完全不同的类文件。
例如,如果您编译以下源文件:
\n\ninterface Hello {\n class HelloInner {\n\n }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n将生成两个类文件:
\n\nHello.class\nHello$HelloInner.class\n
Run Code Online (Sandbox Code Playgroud)\n