class是定义Java类的唯一关键字;合法类需结构明确、封装合理、意图清晰;public类必须与文件名完全一致且一文件至多一个;成员变量须private并配getter/setter;构造方法应显式定义以确保对象合法创建;执行顺序为静态块→实例块→构造器。
class 是定义 Java 类的唯一关键字,没有其他替代写法。一个合法、可维护、符合工程规范的类,不是把字段和方法随便堆在一起就行——它必须有明确结构、合理封装和清晰意图。
Java 编译器强制要求:如果类用 public 修饰,那么该类所在的 .java 文件名必须与类名**完全一致(大小写敏感)**,且一个文件里最多只能有一个 public 类。
public class student { ... } 放在 Student.java 中 → 编译失败(类名首字母未大写)Person.java 中写两个 public class → 编译报错 class Person is public, should be declared in a file named Person.java
class Helper)可以和 public 类共存于同一文件,但仅作为辅助类存在,不能被其他包直接 new 实例直接暴露 public 字段(如 public String name;)是严重设计缺陷——它破坏封装,让外部代码随意修改状态,后续加校验、日志、通知等逻辑几乎不可能。
private 声明字段:private String name;、private int age;
setter:比如 setAge(int age) 中检查 age >= 0 && age
isPasswordSet() 而不返回原始值int 默认是 0,String 默认是 null,若业务上 “未设置” 和 “0/null” 含义不同,应改用包装类 + 显式初始化或 Optional构造方法决定一个对象是否能被合法创建。省略它看似省事,但会隐式生成无参构造器,可能导致对象处于无效状态(如 name = null, age = 0 却被当作有效用户)。

private 无参构造(供框架反射用)+ public 全参构造(保证必填字段不为空)this(...) 以外的实例方法——此时对象尚未初始化完成,可能引发 NPE 或逻辑错乱这三者执行时机不同,但新手常误以为“写了就立刻运行”。实际顺序固定:静态代码块 → 实例代码块 → 构造器,且各自只执行一次(静态块类加载时,实例块每次 new 时)。
public class Demo {
static { System.out.println("1. 静态块"); }
{ System.out.println("2. 实例块"); }
public Demo() { System.out.println("3. 构造器"); }
public static void main(String[] args) {
new Demo();
new Demo();
}
}
// 输出:
// 1. 静态块
// 2. 实例块
// 3. 构造器
// 2. 实例块
// 3. 构造器
class 后面写什么,自然就有答案。