news 2026/2/6 13:31:44

Java中,方法/类的修饰符的书写位置

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java中,方法/类的修饰符的书写位置

一.书写顺序(含类、方法、字段)

在Java中,方法的修饰符和返回类型的书写顺序是有规定的

如main方法中,正确且标准的写法是:

public static void main(String[] args){ ... }

这是Java社区、官方文档、IDE(如Intellij IDEA、Eclipse)默认生成的写法,也是最清晰、最广泛接受的顺序

其他合法的写法(语法上正确,但不推荐)

Java允许public和static交换顺序,因为它们属于不同类别的修饰符

如:

static public void main(String[] args) // 语法上正确但不推荐这样书写

根据Java语言规范(Chapter 8. Classeshttps://docs.oracle.com/javase/specs/jls/se17/html/jls-8.html?spm=5176.28103460.0.0.49d17551ApEHpJ#jls-8.4.3

方法的修饰符顺序是任意的,只要:

  • 访问修饰符最多能有一个(public / protected / private)
  • 非访问修饰符(如static、final、等)可以有多个
  • 返回类型(如void)必须在方法名之前,必须紧挨方法名,不能在修饰符和方法名中间
[访问修饰符] [非访问修饰符] 返回类型 方法名()

其中[]表示可以有也可以没有

这是业界普通约定俗成的书写顺序

类的书写顺序为:

[访问修饰符] [非访问修饰符] class ClassName [extends ...] [implements ...]

如:

public final class StringUtils implements Serializable, Cloneable

而下面这种写法合法但不推荐:

final public class StringUtils implements Serializable // ❌ 顺序混乱

字段(Filed/成员变量)的书写顺序:

[访问修饰符] [非访问修饰符] 类型 变量名 [= 初始值];

总结:

场景规则
访问修饰符只能写一个:publicprotectedprivate或默认(不写)
implements/extends写在类名之后,不属于修饰符,所以不在修饰符顺序中
格式:class A extends B implements C, D
interface是关键字,不是修饰符。定义接口时用:
public interface MyInterface
void/ 返回类型必须紧挨着方法名之前,不能放在修饰符中间
非法组合private abstract method()❌(abstract方法必须被子类实现,不能私有)
static abstract method()❌(Java 8 前不允许;Java 8+ 的static方法不能是abstract

二.Java中的非访问修饰符

在 Java 中,非访问修饰符(Non-Access Modifiers)是用于定义类、方法、变量等的行为、生命周期或特殊语义的关键字,它们不控制访问权限(那是public/protected/private的职责),而是提供额外的功能特性

修饰符可用于作用说明
static类、方法、字段、代码块、嵌套类表示属于类本身,而非实例;可直接通过类名访问
final类、方法、字段、局部变量表示“不可变”:类不能被继承,方法不能被重写,变量值不能更改
abstract类、方法抽象类(不能实例化)、抽象方法(无实现,必须由子类实现)
synchronized方法、代码块保证线程安全,同一时间只有一个线程可执行该方法/代码块
volatile字段保证多线程下变量的可见性(每次读都从主存取,不缓存)
transient字段标记字段不参与序列化(如密码字段)
native方法表示方法由本地代码(如 C/C++)实现,通常通过 JNI 调用
strictfp类、方法保证浮点运算在不同平台结果一致(IEEE 754 标准

注意:某些修饰符有使用限制(如abstract不能和final共存)

组合是否合法说明
abstract+final抽象要被继承,final 禁止继承 → 矛盾
abstract+static❌(方法)抽象方法需被重写,static 方法不能被重写
abstract+private❌(方法)private 方法无法被子类访问,无法实现抽象
final+static常量(如public static final int MAX = 100;
synchronized+static锁的是类对象(Class.class
native+abstractnative 有外部实现,abstract 无实现 → 冲突
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/3 18:07:21

智慧城市、能源等优质学术会议分享!

​ ↑↑↑ 了解更多详细会议信息、投稿优惠 请添加会议老师 2026年可持续发展与城市规划国际学术会议(SDUP 2026) 2026 International Conference on Sustainable Development and Urban Planning ​ ↑↑↑ 了解更多详细会议信息、投稿优惠 请添…

作者头像 李华
网站建设 2026/2/3 18:07:20

一张图看懂网络空间安全:从网络层到应用层的“防护圈”都有哪些?

什么是网络安全,网络空间安全有哪些安全? 本文章详细列举出网络空间安全的十六大种类 网络空间安全是一个覆盖 “物理层 - 网络层 - 应用层 - 数据层 - 业务层” 的全域防护体系,其安全种类可根据防护对象、技术场景和业务领域划分为 16 大…

作者头像 李华
网站建设 2026/2/6 3:20:03

如何从Target平台获取搜索列表数据的API接口

在现代Web开发中,API(应用程序接口)是实现平台数据交互的核心工具。本文将以Target平台为例,详细介绍如何通过其API接口获取搜索列表数据。Target平台提供了一个RESTful API,允许开发者查询关键词相关的搜索结果&#…

作者头像 李华
网站建设 2026/2/3 17:51:34

Apple生态自动化理想之选!亚马逊云科技Mac实例一键部署OpenClaw

企业或团队真正需要的,不是一个“会聊天的AI玩具”,而是一个能在云端持续工作、每个操作都留痕可查、无缝融入现有沟通工具的生产力助手。OpenClaw(原名Clawdbot、Moltbot)火了之后,大家发现:部署方式直接决…

作者头像 李华
网站建设 2026/2/3 17:44:39

AIGS范式革命:Java企业智能化转型的核心路径

在人工智能技术的演进中,从AIGC(人工智能生成内容)到AIGS(人工智能生成服务)的跨越,标志着AI从“辅助性内容工具”升级为“系统性服务重塑者”。对于长期以Java技术栈为核心架构的企业而言,传统…

作者头像 李华