2025
2025.12.06
-
常见困惑
-
封装:
-
实现:1.私有化成员属性(隐藏数据):用private关键字修饰类的成员变量(属性),禁止外部直接访问
2.提供公共访问接口(暴露可控方法):在类内部定义public修饰的getter方法(读属性)和setter方法(写属性),外部只能通过这些方法访问或修改属性,同时可在方法内部添加校验逻辑
class Calculator { // 1. 私有化属性 private TextField num1; private TextField num2; private TextField num3; // 2. getter方法:外部获取属性值(读操作) public TextField getNum1() { return num1; } public TextField getNum2() { return num2; } public TextField getNum3() { return num3; } // 3. setter方法:外部修改属性值(写操作,可加校验) public void setNum1(TextField num1) { // 可选:添加校验逻辑,确保数据合法 if (num1 != null) { this.num1 = num1; } } // 4. 扩展:封装业务接口(不止get/set,还能封装复杂逻辑) public void resetInput() { // 内部封装“清空输入框”逻辑,外部直接调用 num1.setText(""); num2.setText(""); num3.setText(""); } }3.外部通过接口访问属性:外部通过接口访问属性,外部代码不能直接操作private属性,只能通过getter和setter或其他公共方法实现对内部数据的可控访问
class MyCalculatorListener implements ActionListener { private Calculator calculator; public MyCalculatorListener(Calculator calculator) { this.calculator = calculator; } @Override public void actionPerformed(ActionEvent e) { // 外部通过getter获取属性,而非直接访问 int n1 = Integer.parseInt(calculator.getNum1().getText()); int n2 = Integer.parseInt(calculator.getNum2().getText()); // 通过getter修改属性值 calculator.getNum3().setText(String.valueOf(n1 + n2)); // 调用封装的业务接口,清空输入 calculator.resetInput(); } }
-
-
构造器:又叫构造方法,是在创建类的对时(执行new类型名()),自动初始化这个对象的属性,状态,组件 规则:1.名称必须和类名完全一致,没有返回值类型,自动执行,默认构造方法
-
Object类的问题:强制转换的问题:
1.向上转型(子类->Object)无条件自动完成
2.向下转型(object->子类),不能随意转,必须满足object引用的实际对象是目标子类,且建议先用Instanceof判断,避免转换异常
-

浙公网安备 33010602011771号