1.封装的概念
在面向对象程式设计方法中,封装是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。
封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。
要访问该类的代码和数据,必须通过严格的接口控制。
封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。
适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。
封装的优点:😊
良好的封装能够减少耦合。
类内部的结构可以自由修改。
可以对成员变量进行更精确的控制。
隐藏信息,实现细节。
封装的实现步骤:😊
一个私有的数据域(设置属性为private)
一个公有的域访问器方法(getter)
一个公有的域更改器方法(setter)
2.基本的封装代码块
任何要访问类中私有成员变量的类都要通过这些getter和setter方法
public class Encapsulation { private String name; private int age; private double sal; // 进行封装操作 public String getName() { return name; } public void setName(String name) { // 很方便的就可以加入对于数据的校验 if (name.length() >= 2 && name.length() <= 6) { this.name = name; } else { System.out.println("不要搞破坏哦!"); } } public int getAge() { return age; } public void setAge(int age) { // 这里对数据的正确性做判断 if (age >= 18) { this.age = age; } else { System.out.println("您还未成年!"); } } public double getSal() { return sal; } public void setSal(double sal) { this.sal = sal; } // 返回属性的信息 @Override public String toString() { return "Encapsulation{" + "name='" + name + '\'' + ", age=" + age + ", sal=" + sal + '}'; } }
测试类:
Encapsulation encapsulation = new Encapsulation(); encapsulation.setName("dahe"); encapsulation.setAge(22); encapsulation.setSal(15000.00); System.out.println(encapsulation); // Encapsulation{name='dahe', age=22, sal=15000.0}
注意:这里是重写了toString方法,所以输出会选择以重写的toString格式输出
3.构造器结合封装使用
我们发现,使用封装对于数据的安全保障可以很容易通过构造器进行破解
所以我们在定义构造器的时候可以结合封装进行使用:
public Encapsulation(String name, int age, double sal) { // 保证了数据的封装性不可变 setName(name); setAge(age); setSal(sal); }