10:封装

封装

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

封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。

要访问该类的代码和数据,必须通过严格的接口控制。

封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。

适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。

封装的优点

  • 良好的封装能够减少耦合。
  • 类内部的结构可以自由修改。
  • 可以对成员变量进行更精确的控制。
  • 隐藏信息,实现细节。

实现封装的步骤

封装步骤图

1、修改属性的可见性来限制对属性的访问(一般限制为private),代码如下:

public class Person {
    //将 name 和 age 属性设置为私有的,只能本类才能访问,其他类都访问不了,如此就对信息进行了隐藏。
    private String name;
    private int age;
}

权限修饰符

Java中的权限修饰符主要包括private、public和protected,这些修饰符控制着对类和类的成员变量以及成员方法的访问。区别见下表:

权限修饰符 private protected public default
本类 可见 可见 可见 可见
同包其他类或子类 不可见 可见 可见 可见
其他包的类或子类 不可见 不可见 可见 不可见

在这些修饰符中,如不直接标明,则默认的修饰符为default ;封装就是通过权限修饰符来修改属性的访问权限。

2、 对每个值属性提供对外的公共方法访问,也就是创建一对赋取值方法,用于对私有属性的访问,具体代码如下:

public class Demo06 {
    //将 name 和 age 属性设置为私有的,只能本类才能访问,其他类都访问不了,如此就对信息进行了隐藏。
    private String name;
    private int age;

    /*
    对每个值属性提供对外的公共方法访问
     */
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

采用 this 关键字是为了解决实例变量(private String name)和局部变量(setName(String name)中的name变量)之间发生的同名的冲突。

3、通过getter和setter方法访问类中私有成员变量的类。代码如下:

public class Application {
    public static void main(String[] args) {
        Demo06 test = new Demo06();  //创建对象
        //通过setter方法写入数据
        test.setName("张三");
        test.setAge(23);
        //通过getter方法读取数据,并打印输出
        System.out.println(test.getName());
        System.out.println(test.getAge());
    }
}

运行结果:

张三
23

posted @ 2021-07-31 23:00  Happy*^_^*  阅读(180)  评论(0)    收藏  举报