44. Java 类和对象 - 类声明规范与语法结构
类声明基础
在** 2. Java中,什么是类?**章节中,我们以自行车类体系为例构建了面向对象模型。以下是标准Bicycle类的完整实现,展示了类声明的基本要素:
/**
* 自行车基类
* 演示字段、构造器、方法的声明规范
*/
public class Bicycle {
// 状态字段(后续将优化为私有访问)
public int cadence; // 踏板转速(转/分钟)
public int gear; // 当前档位(1-24)
public int speed; // 当前速度(km/h)
/**
* 构造器初始化对象状态
* @param startCadence 初始转速
* @param startSpeed 初始速度
* @param startGear 初始档位
*/
public Bicycle(int startCadence, int startSpeed, int startGear) {
gear = startGear;
cadence = startCadence;
speed = startSpeed;
}
// 行为方法
public void setCadence(int newValue) {
cadence = newValue;
}
public void setGear(int newValue) {
gear = newValue;
}
public void applyBrake(int decrement) {
speed -= decrement;
}
public void speedUp(int increment) {
speed += increment;
}
}
继承机制实现
山地自行车子类的实现展示了继承机制的关键要素:
/**
* 山地自行车子类
* 继承自Bicycle类并扩展座椅高度功能
*/
public class MountainBike extends Bicycle {
// 扩展状态字段
public int seatHeight; // 座椅高度(厘米)
/**
* 子类构造器必须显式调用父类构造器
* @param startHeight 初始座椅高度
*/
public MountainBike(int startHeight, int startCadence,
int startSpeed, int startGear) {
super(startCadence, startSpeed, startGear);
seatHeight = startHeight;
}
// 扩展行为方法
public void adjustSeat(int newValue) {
seatHeight = newValue;
}
}
继承特性说明:MountainBike自动获得父类的所有public/protected成员,并通过super关键字实现父类构造器调用,这种设计符合里氏替换原则(LSP)。
类声明完整结构
类声明语法要素
标准类声明包含以下有序组件([]表示可选):
[访问修饰符] class 类名 [extends 父类] [implements 接口列表] {
// 成员声明区域
}
结构分解:
- 访问修饰符(
public/protected/private):控制类可见范围private仅适用于嵌套类
- 类名:大驼峰命名法(
UpperCamelCase) - 继承声明(
extends):单继承机制,每个类只能有一个直接父类 - 接口实现(
implements):支持多个接口实现,用逗号分隔 - 类体:包含字段、构造器、方法的声明
成员变量声明规范
变量分类体系
| 变量类型 | 作用域 | 生命周期 | 示例 |
|---|---|---|---|
| 成员变量 | 类内部 | 对象实例存活期间 | private int count; |
| 局部变量 | 方法/代码块内部 | 代码块执行期间 | for(int i=0;...) |
| 参数变量 | 方法内部 | 方法执行期间 | void method(String param) |
字段声明标准
[访问修饰符] [static] [final] 数据类型 字段名 [= 初始值];
Bicycle类字段优化版:
// 符合封装原则的字段声明
private int cadence; // 添加private访问控制
private int gear;
private int speed;
访问控制机制
封装实现策略
通过访问修饰符实现信息隐藏:
| 修饰符 | 类内部 | 包内部 | 子类 | 其他包 |
|---|---|---|---|---|
| public | ✔ | ✔ | ✔ | ✔ |
| private | ✔ | ✘ | ✘ | ✘ |
最佳实践:
-
字段优先声明为
private -
通过访问器方法控制访问:
// Getter方法规范 public int getCadence() { return this.cadence; } // Setter方法规范 public void setCadence(int cadence) { if(cadence > 0) { // 添加业务逻辑校验 this.cadence = cadence; } }
类型系统与命名规范
变量类型体系
- 原始类型:直接存储值
- 整型:
byte(1B), short(2B), int(4B), long(8B) - 浮点型:
float(4B), double(8B) - 布尔型:
boolean - 字符型:
char(2B)
- 整型:
- 引用类型:存储对象引用
- 类对象:
String, ArrayList等 - 数组:
int[] - 接口实现
- 类对象:
命名规范标准
| 元素类型 | 命名规则 | 示例 |
|---|---|---|
| 类/接口 | 大驼峰式 | VehicleController |
| 方法 | 小驼峰式+动词开头 | calculateSalary() |
| 变量 | 小驼峰式 | studentCount |
| 常量 | 全大写+下划线 | MAX_CONNECTIONS |
特别提示:
- 避免使用单字符命名(临时变量除外)
- 保持命名一致性(如同时使用
getXxx/isXxx) - 布尔变量推荐使用
isXXX格式(isValid)