java的封装,private关键字

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_33322074/article/details/85916411

一、封装表现

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的方法,外类成功获取了私有化的成员变量。

私有仅仅是封装的一种形式。

猜你喜欢

转载自blog.csdn.net/qq_33322074/article/details/85916411
今日推荐