您的位置 首页 java

Java面向对象之:封装


更多精彩,请关注我的微博:
 

封装是 Java 语言的三大特征之一。

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

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

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

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

正文

封装的优点

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

封装的步骤

1.属性私有化:修改属性的可见性来限制对属性的访问(一般限制为 private ),例如:

这段代码中,将 name 和 age 属性设置为私有的,只能本类才能访问,其他类都访问不了,如此就对信息进行了隐藏。

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

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

实例讲解

根据上面的代码,让我们来写一个java封装类的例子:

以上代码编译运行结果如下:

 Name : Jimmy ; Age : 1000 岁
 

程序能编译通过,而且可以正常运行,但是结果显然违反了事实逻辑规则(人类的年龄怎么可以到1000岁,至少目前不能)。

为什么会发生这样的事情呢?原因就是EncapTest类没有封装好自己的数据,导致外部类没有任何限制的滥用其成员属性,从而进一步导致其状态数据违反了逻辑规则,而这一切的发生对EncapTest类来说是不可避免的。

我们明白,经过”封装”以后的EncapTest类解决了保护自身成员属性不被随便使用的问题,而对于出现违反业务逻辑的情况呢?答案是只要在set()方法上稍作做验证,就能解决问题了。

小结

  1. 封装保证了程序的内部结构的内聚性,提高了安全性,只要我们的方法写的足够完善就不会出现违反逻辑的情况出现;
  2. “封装”给了我们一个有效的规避途径,而不是去规定客户的调用形式,这在源头上杜绝了违反业务逻辑的情况;
  3. 适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性;
  4. 基础知识要经常回顾,还是有嚼劲的。

文章来源:智云一二三科技

文章标题:Java面向对象之:封装

文章地址:https://www.zhihuclub.com/192291.shtml

关于作者: 智云科技

热门文章

网站地图