我在面试中遇到了一个相当简单的问题。
为什么我们使用class
关键字来声明课程?
答案 0 :(得分:12)
简短回答:因为这是在C ++中完成的方式。 Java已经从C ++中采用了大部分语法 - 在我看来,这是一个明智的决定,因为它确实有助于在程序员还是新的时候进行绘制。
现在,如果您的问题是为什么需要关键字 - 也就是为什么编译器不能推断出声明类的位置 - 也许它可以,但使用关键字具有以下好处
编辑:另外一件事 - 编译器在Java语法中推断出无法的某些东西 - 例如,空类和空类之间的唯一区别interface(在Java中都是合法的)是class
/ interface
关键字。
答案 1 :(得分:3)
更好地解决歧义。 .java文件可以是接口,枚举或类。例如,您如何区分没有方法主体的interface
和abstract class
?
Java编译器根本不会这样工作 - 即通过声明,然后看看它可能是什么。不是说它不能,它就是这样设计的。
答案 2 :(得分:2)
原因只是为了便于阅读。
class
关键字。enum
关键字。interface
关键字。关键词在计算机语言中起着非常重要的作用,其含义越明确越明显越好。不一致地命名它们会带来更多弊大于利。
完整的关键字列表在Java语言规范中给出:
以下由ASCII字母组成的字符序列保留用作关键字,不能用作标识符:
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
是保留的,即使它们目前尚未使用。
答案 3 :(得分:1)
将它与接口/方法分开,从而说它有可能在其他地方实例化(如果它不是抽象等)。
答案 4 :(得分:1)
因为编译器根据语法中允许的有效语法验证源代码要比使用接口/枚举/属性定义中允许的有效语法验证源代码要简单得多,如果您明确地给它提供此信息,而不是编译器具有有智慧来推断这一点。