[Java]三大特性之封装

封装这个我们可以从字面上来理解,简单来说就是包装的意思,专业点就是信息隐藏。

是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联系。

也就是说用户是无需知道对象内部的细节(当然也无从知道),可以直接通过该对象对外的提供的接口来访问该对象。

对于封装而言,一个对象它所封装的是自己的属性和方法,所以它是不需要依赖其他对象就可以完成自己的操作。

使用封装有几大好处:

  • 良好的封装能够减少耦合。

  • 类内部的结构可以自由修改。

  • 可以对成员进行更精确的控制。

  • 隐藏信息,实现细节。

我们来通过一些实例来理解封装

public class Husband {  
      
    /* 
     * 对属性的封装 
     * 一个人的姓名、性别、年龄、妻子都是这个人的私有属性 
     */  
    private String name ;  
    private String sex ;  
    private int age ;  
    private Wife wife;  
 }

使用的方式如下

Husband husband = new Husband();  
husband.age = 30;  
husband.name = "张三";  
husband.sex = "男";    //貌似有点儿多余  

但是那天如果我们需要修改Husband,例如将age修改为String类型的呢?你只有一处使用了这个类还好,如果你有几十个甚至上百个这样地方,你是不是要改到崩溃。如果使用了封装,我们完全可以不需要做任何修改,只需要稍微改变下Husband类的setAge()方法即可。}


    public String getAge() {  
        return age;  
    }  
      
    public void setAge(int age) {  
        //转换即可  
        this.age = String.valueOf(age);  
    } 

到了这里我们确实可以看出,封装确实可以使我们容易地修改类的内部实现,而无需修改使用了该类的客户代码。
我们在看这个好处:可以对成员变量进行更精确的控制。
由于取值方法和赋值方法隐藏了实现的变更,因此并不会影响读取或修改该属性的类,避免了大规模的修改,程序的可维护性增强。

原文地址:https://www.cnblogs.com/zhousysu/p/5489306.html