同一文件中的Java公共接口和公共类

时间:2011-08-20 17:44:11

标签: java

在单个.Java文件中,是否可以拥有公共接口和公共类(实现接口)

我是Java编码的新手,并且在网上的大多数地方编写的.java文件不能包含超过2个公共类。我想知道接口和类是否属实。

6 个答案:

答案 0 :(得分:16)

不,这是不可能的。每个.java文件最多可以有一个顶级公共类型。 JLS 7.6. Top Level Type Declarations 声明如下:

  

[...]每个编译单元最多只能有一个[顶级公共]类型。

但是,您可以在同一个文件中拥有受包保护的类。这编译得很好(如果你把它放在一个名为Test.java的文件中:

public interface Test {
    // ...
}

class TestClass implements Test {
    // ...
}

答案 1 :(得分:7)

如果使用嵌套类,则可以在一个文件中包含任意数量的公共类。在您的示例中:

public interface I {
    public class C implements I {
        ...
    }

    public class D implements I {
        ...
    }

    ...
}

答案 2 :(得分:5)

public interface A
{
    public void helloWorld();

    public static class B implements A{

        @Override
        public void helloWorld() {
            System.out.print("Hello World");

        }

    }
}

答案 3 :(得分:3)

Java规则是只有一个公共类或接口可以显示在源文件中,并且名称必须与文件匹配(即Test.java - >公共类测试或公共接口测试,但不是两者)

答案 4 :(得分:0)

在理解界面时,还需要了解interface driven programming作为下一步。它告诉界面的实际用途是什么。它在Java(或任何其他语言)程序中扮演什么角色。

答案 5 :(得分:0)

是的,我们可以在同一Java文件中同时编写 Interface public class

interface Interfable {
public void interfMethod();

}

公共类TestLam {

int x = 5;

public void testLamMethod() {
    int y = 10;
    Interfable i = () -> {
        System.out.println(x);
        System.out.println(y);
    };
    i.interfMethod();
}

public static void main(String[] args) {

    TestLam t = new TestLam();
    t.testLamMethod();
}

}

输出: 5

10

//注意.java文件名应与类名相同