Java 关键词";“类”;声明中

Java 关键词";“类”;声明中,java,Java,在一次采访中,我遇到了一个相当简单的问题 为什么我们使用类关键字来声明类?将其与接口/方法分开,从而说它有可能在其他地方实例化(如果它不是抽象的等)。简短回答:,因为在C++中就是这样做的。java从C++中获取了它的大部分语法——在我看来,这是一个明智的决定,因为它在绘图程序仍然是新的时候确实有帮助。 现在,如果你的问题是为什么需要一个关键字——也就是说,为什么编译器不能直接推断类的声明位置——也许可以,但是使用关键字的好处是 更容易编译 比隐式声明更具可读性 正如上面所说的,类似于C++语法

在一次采访中,我遇到了一个相当简单的问题


为什么我们使用
关键字来声明类?

将其与接口/方法分开,从而说它有可能在其他地方实例化(如果它不是抽象的等)。

简短回答:,因为在C++中就是这样做的。java从C++中获取了它的大部分语法——在我看来,这是一个明智的决定,因为它在绘图程序仍然是新的时候确实有帮助。 现在,如果你的问题是为什么需要一个关键字——也就是说,为什么编译器不能直接推断类的声明位置——也许可以,但是使用关键字的好处是

  • 更容易编译

  • 比隐式声明更具可读性
  • 正如上面所说的,类似于C++语法。
    编辑:还有一件事——有些事情是编译器无法用Java语法推断出来的——例如,空类和空接口之间的唯一区别(在Java中都是合法的)是
    /
    接口
    关键字。

    因为编译器根据类中允许的有效语法验证源代码要比根据接口/枚举/属性定义中允许的有效语法验证源代码要简单得多,如果您显式提供此信息,而不是编译器必须具备推理的智能。

    以更好地解决歧义。java文件可以是接口、枚举或类。例如,您如何区分没有方法体的
    接口
    抽象类


    Java编译器根本不是这样工作的——也就是说,仔细检查声明,然后看看它可能是什么。不是说它不能,它只是这样设计的。

    原因只是为了可读性

    • 如果要声明类,请使用
      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
    保留,即使它们当前未使用

    另见
    相关问题

    我想这是个好问题。我认为如果IDE可以查看源代码并说,哦,它是一个类,而不是一个接口。我们再也不需要这样做了:)因为将它们声明为苹果会更令人困惑?那么你猜呢?我想你不会觉得这是“正确”的,但你肯定说了什么?当时我无法回答任何令人信服的问题。“对人类来说,比隐含的声明更具可读性”+1!