Java 关键词";“类”;声明中
在一次采访中,我遇到了一个相当简单的问题Java 关键词";“类”;声明中,java,Java,在一次采访中,我遇到了一个相当简单的问题 为什么我们使用类关键字来声明类?将其与接口/方法分开,从而说它有可能在其他地方实例化(如果它不是抽象的等)。简短回答:,因为在C++中就是这样做的。java从C++中获取了它的大部分语法——在我看来,这是一个明智的决定,因为它在绘图程序仍然是新的时候确实有帮助。 现在,如果你的问题是为什么需要一个关键字——也就是说,为什么编译器不能直接推断类的声明位置——也许可以,但是使用关键字的好处是 更容易编译 比隐式声明更具可读性 正如上面所说的,类似于C++语法
为什么我们使用
类
关键字来声明类?将其与接口/方法分开,从而说它有可能在其他地方实例化(如果它不是抽象的等)。简短回答:,因为在C++中就是这样做的。java从C++中获取了它的大部分语法——在我看来,这是一个明智的决定,因为它在绘图程序仍然是新的时候确实有帮助。
现在,如果你的问题是为什么需要一个关键字——也就是说,为什么编译器不能直接推断类的声明位置——也许可以,但是使用关键字的好处是
编辑:还有一件事——有些事情是编译器无法用Java语法推断出来的——例如,空类和空接口之间的唯一区别(在Java中都是合法的)是
类
/接口
关键字。因为编译器根据类中允许的有效语法验证源代码要比根据接口/枚举/属性定义中允许的有效语法验证源代码要简单得多,如果您显式提供此信息,而不是编译器必须具备推理的智能。以更好地解决歧义。java文件可以是接口、枚举或类。例如,您如何区分没有方法体的接口
和抽象类
Java编译器根本不是这样工作的——也就是说,仔细检查声明,然后看看它可能是什么。不是说它不能,它只是这样设计的。原因只是为了可读性
- 如果要声明类,请使用
关键字class
- 如果要声明枚举,请使用
关键字enum
- 如果正在声明接口,请使用
关键字interface
abstract continue for new switch
assert default if package synchronized
boolean do goto private this
break double implements protected throw
byte else import public throws
case enum instanceof return transient
catch extends int short try
char final interface static void
class finally long strictfp volatile
const float native super while
关键字const
和goto
保留,即使它们当前未使用
另见