news 2026/4/16 20:04:52

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/4/16 12:23:49

iPhone 13 Pro 深度解析:配色外观|核心参数|ProMotion 屏幕|影像与视频|续航与充电|官方维修手册要点|二手验机避坑清单(图文版)

🔥 个人主页: 杨利杰YJlio ❄️ 个人专栏: 《Sysinternals实战教程》 《Windows PowerShell 实战》 《WINDOWS教程》 《IOS教程》 《微信助手》 《锤子助手》 《Python》 《Kali Linux》 《那些年未解决的Windows疑难杂症》 🌟 让…

作者头像 李华
网站建设 2026/4/16 15:46:50

CTF从零到一:新手必备工具合集与下载方式,一键直达!

CTF比赛必备常用工具 一、什么是CTF二、比赛中工具的重要性三、常用MISC(杂项)工具 1. Audacity (提取莫斯密码辅助工具)2. stegsolve (图片隐写分析工具)3. QR_Research (二维码工具&#xff0…

作者头像 李华
网站建设 2026/4/16 13:35:38

Python 操作 Excel 高阶技巧:用 openpyxl 玩转循环与 Decimal 精度控制

目录 Python 操作 Excel 高阶技巧:用 openpyxl 玩转循环与 Decimal 精度控制一、 为什么你的 Excel 数据处理总是“差一点”?二、 精度之痛:用 Decimal 拯救你的财务数据1. 浮点数的“陷阱”2. Decimal 模块的引入 三、 效率革命:…

作者头像 李华
网站建设 2026/4/16 14:05:05

Spring Boot 封神之路:一文彻底搞定web开发

SpringBoot web开发能力由SpringMVC提供。一&#xff1a;Web场景1&#xff1a;创建项目<?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema…

作者头像 李华