当前位置: 首页 > 面试题库 >

Java修饰符的语法和格式

池恩
2023-03-14
问题内容

我发现自己对访问权限和非访问修饰符的顺序感到困惑。例如

abstract void go()  
abstract public void go()  
public final void go()  
void final go()

final class Test{}  
class final Test{}  
final abstract class Test{}  
abstract final Test{}

我永远不知道正确的顺序是什么,有时我弄错了,因为有太多可能的组合。是否有明确的指南关于哪个应该先于另一个?

是否有任何描述要在代码中出现的格式和顺序?我正在尝试提供语法指南,但不确定它是否100%正确。这里是:

Methods:  
[access modifier | nonaccess modifier] return-type method-name

Classes:  
[access modifier | nonaccess modifier] class class-name

Interfaces:  
[access modifier | nonaccess modifier] interface interface-name

Variables:  
[access modifier | nonaccess modifier] variable-type variale-name

问题答案:

根据Java编程语言(简体)的官方
语法

Modifier:
  Annotation | public | protected | private
  static | abstract | final | native | synchronized
  transient | volatile | strictfp

ClassOrInterfaceDeclaration:
        {Modifier} (ClassDeclaration | InterfaceDeclaration)

ClassBodyDeclaration:
        {Modifier} MethodOrFieldDecl

MethodOrFieldDecl:
        Type Identifier MethodOrFieldRest

因此,对于类和接口,修饰符必须 始终class以任何顺序出现在关键字之前。例如,final public class有效,但class final无效。对于方法和字段,它是相同的,但是修饰符必须出现在类型之前。



 类似资料:
  • 我正在编写代码以匹配给定字符串或行的方法声明。这就是我的问题所在。当试图匹配修饰符时,当声明 工作。我一直都是这样 这就是我的问题。两者有什么区别,所有修饰符都一样吗?我相信这是有原因的,松散的顺序不是设计决定。 哦,如果有人知道匹配给定字符串的方法的最佳方法,请告诉我。谢谢。现在我正在使用正则表达式。

  • 主要内容:final 修饰变量,final修饰方法,final修饰类,final 修饰符使用总结final 在 Java 中的意思是最终,也可以称为完结器,表示对象是最终形态的,不可改变的意思。final 应用于类、方法和变量时意义是不同的,但本质是一样的,都表示不可改变,类似 C# 里的 sealed 关键字。 使用 final 关键字声明类、变量和方法需要注意以下几点: final 用在变量的前面表示变量的值不可以改变,此时该变量可以被称为常量。 final 用在方法的前面表示方法不可以

  • 本文向大家介绍vue事件修饰符和按键修饰符用法总结,包括了vue事件修饰符和按键修饰符用法总结的使用技巧和注意事项,需要的朋友参考一下 之前关于vue事件修饰符和按键修饰符的一点分析,最近需要回顾,就顺便发到随笔上了 在事件处理程序中调用 event.preventDefault() 或 event.stopPropagation() 是非常常见的需求。尽管我们可以在 methods 中轻松实现这

  • 问题内容: 由多个线程访问但仅在同步块内部访问的变量是否需要volatile修饰符?如果没有,为什么? 问题答案: 您不需要在内部使用,synced已经保证了一致地使用(每次访问)时变量的本地缓存的正确行为。 适用于原始值,并且可以作为原子访问原始类型的理想捷径。请注意,在JDK 5中,volatile的行为已从1.4开始更改。 更多信息可以在这里找到

  • private private修饰符是我们使用的最限制的修饰符。它表示它只能被自己所在的文件可见。所以如果我们给一个类声明为private,我们就不能在定义这个类之外的文件中使用它。 另一方面,如果我们在一个类里面使用了private修饰符,那访问权限就被限制在这个类里面了。甚至是继承这个类的子类也不能使用它。 所以一等公民,类、对象、接口……(也就是包成员)如果被定义为private,那么它们只

  • 根据留档(http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html)的第二个表,没有标识符的成员对子类不可见。 但是,当我运行下面的示例代码时,“1”(b的内容)被打印出来! 如果没有访问修饰符的成员不能从子类访问,那么为什么在本例中打印它 它应该抛出一个错误,就像在私有访问修饰符中一样,不是吗?