封装

在面向对象程式设计方法中,封装(Encapsulation)是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。

也就是隐藏内部的实现细节,外部不能查看,通过提供对外的方法来调用与修改。

封装能让代码更易于理解与维护,同时也增强了代码的安全性。

  • 封装(数据的隐藏)
    • 程序设计追求 “高内聚,低耦合” 。
    • 高内聚:类的内部数据操作细节自己完成,不允许外部干涉。
    • 低耦合:仅暴露少量的方法给外部使用。
  • 简单来说就两个东西: getset

实现封装

  • 通过 private 关键字设置为私有属性,再设置公共的 getset 方法方便外部取得、设置name的值。
public class Student {

    // 私有的名字变量
    private String name;

    // 取得名字的值
    public String getName() {
        return this.name;
    }

    // 设置名字的值
    public void setName(String name) {
        this.name = name;
    }
}
  • 封装还可以进行判断输入值是否合法,或者更多骚操作。

  • 实例:

    public class Student {
    
        // 私有的名字变量
        private String name;
    
        // 私有的性别变量
        private char sex;
    
        // 取得名字的值
        public String getName() {
            return this.name;
        }
    
        // 设置名字的值
        public void setName(String name) {
            this.name = name;
        }
    
        // 取得sex
        public char getSex() {
            return sex;
        }
    
        // 设置sex过程中加入判断,防止输入不合法的值
        public void setSex(char sex) {
            if (sex == '男' || sex == '女') {
                this.sex = sex;
            }else {
                System.out.println("输入不合法!");
            }
        }
    }

    调用:

    import com.wnaoii.oop.Demo03.Student;
    
    public class Application {
    
        public static void main(String[] args) {
            Student student = new Student();
    
            student.setName("小明");
            System.out.println("名字叫:" + student.getName());
            System.out.println("--------------");
    
            // 输入值不合法
            student.setSex('爬');
            System.out.println(student.getSex());
    
            // 输入值合法
            student.setSex('男');
            System.out.println("性别为:" + student.getSex());
        }
    }

    结果:

    名字叫:小明
    --------------
    输入不合法!
     
    性别为:男