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判断,避免转换异常

posted @ 2025-12-06 19:53  RIcard  阅读(0)  评论(0)    收藏  举报