什么是封装?
所谓封装,就是字面意思,把一个东西装起来,只留下一个"门"给有需要的"人"访问使用.就好比我们的电视机,厂家把所有内部细节都封装起来,包括换台键,声音调节键,开机关机键等,我们只需要使用遥控器就可以完成对应的操作.这个过程就是使用到前面所说的"门",更专业的说法叫接口.通俗的来说,封装就是对数据的隐藏,而遵循的原则就是该露的露,该藏的藏.这里要清楚,封装主要是针对类的属性进行操作将类的属性"藏"起来.
怎么封装呢?
在我们的生活中,建立一个类(银行),然后将里面的属性进行私有化,所以我们可以知道,所有在封装类内部的属性都需使用private修饰符,来达到属性私有化,从而做到封装.这样操作之后,我们在实现类就不能直接调用类的属性了,这个时候又引出一个问题,我们怎么访问封装的类里面的属性呢?
怎么访问封装的类里面的属性呢?
这里要访问封装类属性就需要"门"了,这里的门就是操作封装类属性的方法,这里提供了public的get和set的方法,get可以获得数据,set可以可以给这个数据设置值.get/set方法可以使用快捷键alt+insert:getter and setter快捷实现,综上所述我们来看看代码实现:
//封装一般用于属性 //private:私有 public class Student { //属性私有 private String name;//姓名 private int age;//年龄 //提供可以操作属性的方法(public的get,set方法) public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { if (age>120 || age<0){ this.age = 3; }else{ this.age = age; } } }
在封装类写下get.set方法后,在实现类就可以通过get/set方法对封装类的基础属性进行操作:
public class Test { public static void main(String[] args) { Student s1 = new Student(); s1.setName("麦乐鸡侠"); s1.setAge(20); System.out.println(s1.getAge());//20 System.out.println(s1.getName());//麦乐鸡侠 } }
为什么会出现封装呢?
在我们程序设计中,一直追求"高内聚,低耦合",高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合就是仅暴露少量的方法给外部使用.这里引入一个例子就是银行,高内聚就好比在银行内部,具体是怎么个构成,管理整个银行运作的各个细节都是由内部人员管理;低耦合就是对银行我们有取钱,存钱这个方法,每个"用户"只能对自己的银行账户进行操作,但围绕银行又有很多操作,但只会提供一些最基本且有意义的操作给客户.而对于客户的一些操作,还能进行判断,来保证程序的安全性.
封装有什么用呢?
1.提高程序的安全性,可以保护内部数据(在set方法可以对调用处的数据进行判断)
2.隐藏代码的实现细节
3.统一接口(get/set方法)
4.便于修改内部代码,提高系统的可维护性