当前位置:文档之家› java实现协议封装

java实现协议封装

竭诚为您提供优质文档/双击可除

java实现协议封装

篇一:浅谈java封装

封装

封装就是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联系。也就是说用户是无需知道对象内部的细节(当然也无从知道),但可以通过该对象对外的提供的接口来访问该对象。

使用封装有三大好处:

1、良好的封装能够减少耦合。

2、类内部的结构可以自由修改。

3、可以对成员进行更精确的控制。

4、隐藏信息,实现细节。

1.publicclasshusband{

2.

3./*

4.*对属性的封装

5.*一个人的姓名、性别、年龄、妻子都是这个人的私有属性

6.*/

7.privatestringname;

8.privatestringsex;

9.privateintage;

10.privatestringwife;

11.

12./*

13.*setter()、getter()是该对象对外开发的接口

14.*/

15.publicstringgetname(){

16.returnname;

17.}

18.

19.publicvoidsetname(stringname){

=name;

21.}

22.

23.publicstringgetsex(){

24.returnsex;

25.}

26.

27.publicvoidsetsex(stringsex){

28.this.sex=sex;

29.}

30.

31.publicintgetage(){

32.returnage;

33.}

34.

35.publicvoidsetage(intage){

36.this.age=age;

37.}

38.

39.publicvoidsetwife(stringwife){

40.this.wife=wife;

41.}

42.}

从上面两个实例我们可以看出:

封装把一个对象的属性私有化,同时提供一些可以被外界访问的属性的方法,如果不想被外界方法,我们大可不必

提供方法给外界访问。但是如果一个类没有提供给外界访问的方法,那么这个类也没有什么意义了。

如果我们不使用封装,那么该对象就没有setter()和getter(),那么husband类应该这样写:

[java]viewplaincopyprint

1.publicclasshusband{

2.publicstringname;

3.publicstringsex;

4.publicintage;

5.publicstringwife;

6.}

我们应该这样来使用它:

[java]viewplaincopyprint

1.husbandhusband=newhusband();

2.husband.age=30;

="张三";

4.husband.sex="男";//貌似有点儿多余

但是那天如果我们需要修改husband,例如将age修改为string类型的呢?你只有一处使用了这个类还好,如果你有几十个甚至上百个这样地方,你是不是要改到崩溃。如果使用了封装,我们完全可以不需要做任何修改,只需要稍微改变下husband类的setage()方法即可。}

[java]viewplaincopyprint

1.publicclasshusband{

2.

3./*

4.*对属性的封装

5.*一个人的姓名、性别、年龄、妻子都是这个人的私有属性

6.*/

7.privatestringname;

8.privatestringsex;

9.privatestringage;/*改成string类型的*/

10.privatestringwife;

11.

12.publicstringgetage(){

13.returnage;

14.}

15.

16.publicvoidsetage(intage){

17.//转换即可

18.this.age=string.valueof(age);

19.}

20.

21./**省略其他属性的setter、getter**/

22.

其他的地方依然那样引用(husband.setage(22))保持

不变。

到了这里我们确实可以看出,封装确实可以使我们容易地修改类的内部实现,而无需修改使用了该类的客户代码。

我们在看这个好处:可以对成员变量进行更精确的控制。

还是那个husband,一般来说我们在引用这个对象的时

候是不容易出错的,但是有时你迷糊了,写成了这样:[java]viewplaincopyprint

1.husbandhusband=newhusband();

2.husband.age=300;

也许你是因为粗心写成了,你发现了还好,如果没有发现那就麻烦大了,逼近谁见过300岁的老妖怪啊!

但是使用封装我们就可以避免这个问题,我们对age的访问入口做一些控制(setter)如:

[java]viewplaincopyprint

1.publicclasshusband{

2.

3./*

4.*对属性的封装

5.*一个人的姓名、性别、年

相关主题