Java类和接口名称冲突

Ank*_*kit 1 java interface class

interface A
{
void print();
}


class A implements A
{

public void print()
{
System.out.println("Hello");
}

public static void main(String args[])
{
A a=new A();
a.print();
}

}
Run Code Online (Sandbox Code Playgroud)

当我使用此代码时,它说"重复的类:A".为什么这样?我可以没有相同的类和接口名称

Wyz*_*a-- 5

您不能拥有具有相同名称的类和接口,因为Java语言不允许它.

首先,它含糊不清.如果你声明一个这样的变量:

A a;
Run Code Online (Sandbox Code Playgroud)

那个变量的类型是什么?它是类还是接口?

其次,编译的Java代码存储在以.class文件中定义的类或接口命名的文件中.名为的接口A和名为的类A都将编译为名为的文件A.class.您不能在同一文件夹中拥有两个具有相同名称的文件.

错误消息显示"重复类",因为Java内部将接口视为一种特殊类.