一、封装表现
1、方法就是一个封装
2、类其实也是一个封装体。
二、封装好处
1、提高代码复用性
2、隐藏实现细节,并对外提供调用方式,这也是封装概念。
3、提高了安全性
三、封装是如何提高安全性的
封装提高安全性的定义:不让外边的类直接调用我的成员变量。比如一个Person类有两个成员变量age,和name。
注意这种写法,外类(同一个包里的类)可以对年龄,姓名赋值。一旦外类直接赋值,就会出现安全问题。如:
外类给年龄赋了-200的初值,不符合常理,这就是安全问题。
四、private关键字处理安全问题。
1、private关键字:私有 属于成员变量修饰符,只能成员变量使用,局部变量使用就会报错。不能修饰局部变量。被private修饰的成员变量只能在自己的本类中使用。因此private又被称为权限修饰。
2、private关键字修饰出现的问题。
如果用private修饰了,外类无法直接访问,那当如何处理,外界一定要访问,但是访问要进行限制性访问,比如对赋值进行检查一下,是否符合人类规范?等等。
3、处理方法。
这就引入了著名的set和get方法。set和get方法就来源于此。
set方法用来对赋的值进行过滤,并将过滤后的值传给成员变量。
4、又出现一个新问题。
现在外类可以通过set方法进行赋值了,例如
如上图通过p.setAge(50)将年龄50赋值给了Person类的成员变量。
上图最后一行,现在要打印这个值,但是成员变量是有private修饰的,用p.age是无法获取成员变量的值,因为经过private修饰的值,只能由本类来调用。
处理方法:在本类中增加一个get方法。外类通过get方法来获取经过private修饰的值。
在本类中get方法就两行。用于返回成员变量。
外类中获取成员变量的方法是:
外类也通过get方法获取里面的值。
总结:
由于对类进行封装,为了实现封装的安全性,防止外类乱赋值。就要对类的成员变量进行私有化。私有化又产生了,外类无法访问的问题,因此又引出了set方法,set方法对外类的赋值进行了过滤,把不符合要求的值挡在了外面。私有化还出现了外类无法获取成员变量的值,因此又引入了get方法,get方法的用处是:提供了外类获取本类成员变量的值得接口或者方法。通过get的方法,外类成功获取了私有化的成员变量。
私有仅仅是封装的一种形式。