描述

封装性的概念与操作方法

封装性是面向对象思想的三大特征之一(其他两个特性是继承和多态)。

封装就是隐藏实现细节,仅对外提供访问接口。

封装有:属性的封装、方法的封装、类的封装、组件的封装、模块化封装、系统级封装等等。

如果属性没有进行封装,那么在本类之外创建对象后,可以直接访问属性。

对于属性或方法来说,使用关键字private(访问权限修饰符)可进行封装,private表示私有的,私有的属性或者方法,只能在本类中访问。

想要在类外部访问私有属性,需要提供公有的方法进行间接访问。

成员变量和局部变量

在类中的位置不同

成员变量:在类中定义

局部变量:在方法中定义或者是方法中的参数

在内存中的位置不同

成员变量:在堆内存

局部变量:在栈内存

生命周期不同

成员变量:随着对象的创建而存在,随着对象的销毁而消失

局部变量:随着方法的调用而存在,随着方法的调用完成而消失

初始化值不同

成员变量:有默认初始化值,引用类型默认为null

局部变量:没有默认初始化值,必须定义,赋值,才能使用。

Java的封装性

信息的封装与隐藏

使用者对类内部定义的属性(对象的成员变量)的直接操作会导致数据的错误、混乱或安全性问题。在面向对象程式设计方法中,封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部份包装、隐藏起来的方法。

封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。要访问该类的代码和数据,必须通过严格的接口控制。

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

封装原则:将不需要对外提供的内容都隐藏起来,把属性都隐藏,提供公共方法对其访问。

封装的好处(优点):

1)通过隐藏对象的属性来保护对象内部的状态(隐藏信息、实现细节)。

2)提高了代码的可用性和可维护性,因为对象的行为可以被单独的改变或者是扩展(将变化隔离,类内部的结构可以自由修改,增加内部实现部分的可替换性)。

3)禁止对象之间的不良交互提高模块化(良好的封装能够减少耦合)。

4)可以对成员变量进行更精确的控制。

5)容易保证类内部数据间的一致性,从而提高软件的可靠性。

抽象和封装的不同点:

抽象和封装是互补的概念。一方面,抽象关注对象的行为。另一方面,封装关注对象行为的细节。一般是通过隐藏对象内部状态信息做到封装,因此,封装可以看成是用来提供抽象的一种策略。

实现Java封装

Java中通过将数据声明为私有的(private),再提供公共的(public)方法:getXxx()和setXxx()实现对该属性的操作,以实现下述目的:

1)隐藏一个类中不需要对外提供的实现细节;

2)使用者只能通过事先定制好的方法来访问数据,可以方便地加入控制逻辑,限制对属性的不合理操作;

3)便于修改,增强代码的可维护性;

为属性封装:

java中封装个传输数据的类_Java

为方法封装:

java中封装个传输数据的类_成员变量_02

下面看一下实现Java封装的示例:

java中封装个传输数据的类_java中封装个传输数据的类_03

JavaBean

JavaBean是一种Java语言写成的可重用组件。

所谓javaBean,是指符合如下标准的Java类:

1)类是公共的

2)有一个无参的公共的构造器

3)有属性,且有对应的get、set方法

4)用户可以使用JavaBean将功能、处理、值、数据库访问和其他任何可以用java代码创造的对象进行打包,并且其他的开发者可以通过内部的JSP页面、Servlet、其他JavaBean、applet程序或者应用来使用这些对象。用户可以认为JavaBean提供了一种随时随地的复制和粘贴的功能,而不用关心任何改变。

java中什么是类的封装性

类的封装性即不能让外面的类随意修改一个类的成员变量;

在定义一个类的成员,使用private关键字说明这个成员的访问权限,只能被这个类的其他成员方法调用,而不能被其他的类中的方法所调用;

为实现封装性,常将类的成员变量声明为private,再通过public的方法来对这个变量进行访问。对一个变量的操作,一般都有 读取和赋值操作,我们一般定义两个方法来实现这两种操作,即:getxxx()与setxxx();

一个类就是一个模块,我们应该让模块仅仅公开必须要让外界知道的内容,而隐藏其他的一切内容。再进行程序设计时,应尽量避免一个模块直接修改或操作另一个模块的数据,模块设计追求强内聚,弱耦合。