Java面向对象——封装性

我们程序设计追求”高内聚,低耦合“:

  • 高内聚:类的内部数据操作细节自己完成,不允许外部干涉
  • 低耦合:仅对外部暴露少量的方法用于使用

隐藏对象内部的复杂性,只对外部公开简单的接口。便于外界调用,从而提高系统的可扩展性、可维护性。通俗的说,把该隐藏的隐藏起来,该暴露的暴露出来,这就是封装性的设计思想。

1.问题的引入

当我们创建一个类的对象以后,我们可以通过“对象.属性”的方式,对对象的属性进行赋值。这里,赋值操作要受属性的数据类型和存储范围的制约。除此之外,没有其他制约条件。但是,在实际问题中,我们往往需要给属性赋值加入额外的限制条件。这个条件就不能在属性声明时体现,我们只能通过方法进行限制条件的添加。

2.封装性的体现

  • 我们将类的属性私有化(private),同时,提供公共的(public)方法来获取(getxxx)和设置(setxxx)的值。
  • 不对外暴露私有的方法
  • 单例模式
  • 。。。

示例:

package com.xlx.java;

public class HelloWorld {
    public static void main(String[] args) {
        Animal a1=new Animal();
        a1.setAge(100);
        a1.getAge();
    }
}

class Animal{
    private int age;
    
    public int getAge() {
        return age;
    }
    
    public void setAge(int a) {
        age=a;
    }
}