Java 抽象和最终是访问修饰符或访问说明符

Java 抽象和最终是访问修饰符或访问说明符,java,access-modifiers,access-specifier,Java,Access Modifiers,Access Specifier,所以我编译了上面的代码,得到了明显的错误,但是错误是访问修饰符的非法组合,但是java文档说只有3个访问修饰符(public、private和protected),所以这些抽象的、最终的、公共的,私有和受保护的是访问修饰符或访问说明符或其他东西?因为在许多书籍和网站中,他们提到这些关键字有时是访问修饰符,有时是访问说明符。我在这里很困惑。在类声明的上下文中,根据,这些都是类修饰符 如果您进一步阅读,您将看到只有public、private和protected是访问修饰符(这很有意义:它们确定是否

所以我编译了上面的代码,得到了明显的错误,但是错误是访问修饰符的非法组合,但是java文档说只有3个访问修饰符(public、private和protected),所以这些抽象的、最终的、公共的,私有和受保护的是访问修饰符或访问说明符或其他东西?因为在许多书籍和网站中,他们提到这些关键字有时是访问修饰符,有时是访问说明符。我在这里很困惑。

在类声明的上下文中,根据,这些都是类修饰符

如果您进一步阅读,您将看到只有public、private和protected是访问修饰符(这很有意义:它们确定是否可以从代码的其他部分访问该类)

因此,是的,从技术上讲,抽象和最终都不是访问修饰符,错误消息可能更精确。请注意,javac(Java 8)错误消息是:

修改器的非法组合:抽象和最终


在类声明的上下文中,根据,这些都是类修饰符

如果您进一步阅读,您将看到只有public、private和protected是访问修饰符(这很有意义:它们确定是否可以从代码的其他部分访问该类)

因此,是的,从技术上讲,抽象和最终都不是访问修饰符,错误消息可能更精确。请注意,javac(Java 8)错误消息是:

修改器的非法组合:抽象和最终


在类声明的上下文中,根据,这些都是类修饰符

如果您进一步阅读,您将看到只有public、private和protected是访问修饰符(这很有意义:它们确定是否可以从代码的其他部分访问该类)

因此,是的,从技术上讲,抽象和最终都不是访问修饰符,错误消息可能更精确。请注意,javac(Java 8)错误消息是:

修改器的非法组合:抽象和最终


在类声明的上下文中,根据,这些都是类修饰符

如果您进一步阅读,您将看到只有public、private和protected是访问修饰符(这很有意义:它们确定是否可以从代码的其他部分访问该类)

因此,是的,从技术上讲,抽象和最终都不是访问修饰符,错误消息可能更精确。请注意,javac(Java 8)错误消息是:

修改器的非法组合:抽象和最终



不能同时将一个类抽象化和最终化。抽象表示您将扩展该类并使其具体化。Final表示类不能扩展。Final和abstract不是访问修饰符。在Java中,唯一的访问修饰符是public、private和protected。就我所知,访问修饰符和说明符之间的差异只是术语上的差异。@ClementHoang那么我为什么会因为访问修饰符的非法组合而出错实际上有四个访问修饰符:公共保护的私有AAAAA和包私有(如果未指定访问修饰符,则意味着后者)@Durandal包不是修饰符,不能同时使一个类抽象和最终。抽象表示您将扩展该类并使其具体化。Final表示类不能扩展。Final和abstract不是访问修饰符。在Java中,唯一的访问修饰符是public、private和protected。就我所知,访问修饰符和说明符之间的差异只是术语上的差异。@ClementHoang那么我为什么会因为访问修饰符的非法组合而出错实际上有四个访问修饰符:公共保护的私有AAAAA和包私有(如果未指定访问修饰符,则意味着后者)@Durandal包不是修饰符,不能同时使一个类抽象和最终。抽象表示您将扩展该类并使其具体化。Final表示类不能扩展。Final和abstract不是访问修饰符。在Java中,唯一的访问修饰符是public、private和protected。就我所知,访问修饰符和说明符之间的差异只是术语上的差异。@ClementHoang那么我为什么会因为访问修饰符的非法组合而出错实际上有四个访问修饰符:公共保护的私有AAAAA和包私有(如果未指定访问修饰符,则意味着后者)@Durandal包不是修饰符,不能同时使一个类抽象和最终。抽象表示您将扩展该类并使其具体化。Final表示类不能扩展。Final和abstract不是访问修饰符。在Java中,唯一的访问修饰符是public、private和protected。就我所知,访问修饰符和说明符之间的差异只是术语上的差异。@ClementHoang那么我为什么会因为访问修饰符的非法组合而出错实际上有四个访问修饰符:公共保护的私有AAAAA和包私有(如果未指定访问修饰符,则意味着后者)@Durandal包不是一个修饰符。首先你说所有(抽象、最终、公共、私有和受保护)修饰符,但下一行你说只有公共、私有和受保护是修饰符。那么这意味着什么?@user3690061这些都是修饰符,但只有private、public和protected是访问修饰符。所以在官方文档中没有所谓的访问说明符?@user3690061。JLS中对说明符的唯一引用是在参数说明符的上下文中,这意味着方法参数的类型和名称,如
public void someMethod(int i){}
@user3690061中的
int i
,告诉您最终amd摘要是访问修饰符的人是错误的。公共、受保护和私人(pa)
abstract final class Outer {

}