java封装详解
来源:互联网 发布:不合法的标识符java 编辑:程序博客网 时间:2024/06/18 16:21
先来个例子看看;
public class Man
{
//对属性的封装,一个人的姓名,年龄,妻子都是这个对象(人)的私有属性
private String name;
private int age;
private Woman wife;
//对改人对外界提供方法的封装,可以设定妻子,姓名,年龄也可以获得男人的姓名和年龄
public void setWife(Woman wife)
{
this.wife = wife;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public int getAge()
{
return age;
}
public void setAge(int age)
{
this.age = age;
}
}
public class Woman
{
//属性封装
private String name;
private int age;
private Man husband;
//方法封装
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public int getAge()
{
return age;
}
public void setAge(int age)
{
this.age = age;
}
public Man getHusband()
{
return husband;
}
public void setHusband(Man husband)
{
this.husband = husband;
}
}
/**
* 仔细看就会发现,Man类没有提供getWife的方法,这是以为男人不想让自己的妻子被外界访问,
*
* 直接下来呢,就是封装可以吧一个对象的属性私有,而提供一些可以被外界访问的属性的方法,
*
* 比如说,name属性,Man和Woman类都有相应的get和set方法,外界都可以通过这些方法访问和修改
*
* 同时对一些改对象不想让外界访问的属性,就不提供其方法,比如说Man的wife属性,就没有get方法
*
* 外界是不能带到Man类的wife属性的
*
*/
上面那例子可能没有突出封装的好处,下面来个超简单的表达下:
public class Show
{
public static void show(String str)
{
System.out.println(str);
}
}
上面就是对 System.out.println();的封装。
调用的时候 :
public class Use
{
public static void main(String[] args)
{
Show.show("封装");
}
}
这样用的时候就不用使:System.out.println("封装");
如果还有地方用到, 就省去了好多 System.out.println();
简而言之,有一段代码,如果3个程序要用它,你不封装,那你就得在这3个程序里都要写,浪费代码,浪费时间。
封装是指隐藏对象的属性和实现细节,仅仅对外公开接口。封装能为软件系统带来以下优点:
(1)便于使用者正确的方便的理解和使用系统,防止使用者错误修改系统的属性。如果属性变为 public,就好比,到银行去存钱,不是通过柜面进行操作的,而是直接跑到银行的金库里面自己去拿钱了,这样就很不安全,这个例子中,可以把银行金库中的钱看作是某一对象的属性,而柜面的工作人员、出纳柜台就可以看作是set /get 方法了,也就是让对外服务提供某些接口,具体里面的操作就隐藏起来了。
再比如电视机系统,尽管它本身的实现很复杂,但用户使用起来却非常简单,只要通过遥控器上的几个按钮就能享受电视机提供的服务。电视机的实现细节被藏在它的大壳子里,没有必要向用户公开。
(2)有助于建立各个系统之间的松耦合关系,提高系统的独立性。当某一个系统的实现发生变化,只要它的接口不变,就不会影响到其他的系统。
(3)提高软件的可重用性,每个系统都是一个相对独立的整体,可以在多种环境中得到重用。例如干电池就是一个可重用的独立系统,在相机、手电筒、电动剃须刀和玩具赛车中都能发挥作用。
(4)降低了构建大型系统的风险,即使整个系统不成功,个别的独立子系统有可能依然是有价值的。例如相机损坏了,它的干电池依然有用,可以安装到手电筒中。
一个设计良好的系统会封装所有的实现细节,把它的接口与实现清晰的隔离开来,系统之间只通过接口进行通信。面向对象的编程语言主要是通过访问控制机制来进行封装,这种机制能控制对象的属性和方法的可访问性。
在设计封装时必须注意以下几条事项:
发布接口——封装的对外发布接口尽可能的简单化,以便能方便地被第三方所调用。
封装的设计难易程度——这是在设计一个封装必须要考虑的问题。高难度的封装也会让用户无从下手。
更大的单元——许多封装的启发式知识与JavaArchive (JAR)文件有关。在这一点上,类,封装,JAR等级都存在高集成性。
认真地去处理封装
封装中的完整功能函数能方便你的程序设计,因为它减少了很多不必要的繁琐。关键之处在于能设计出包含全部内容的高集成性的封装。胡乱的封装也会产生胡乱的结果,这就会产生软件维护与发布的危机。在下一节中,我将讲述启发式知识的其他内容以帮助你设计出高凝聚的封装。
- java封装详解
- Java 封装的详解
- java基础 继承、封装、多态、抽象详解
- Java三大特性详解--封装
- java详解 --- 类与对象以及封装
- 封装详解
- 黑马程序员----Java中的封装,继承和多态详解
- JAVA中继承、封装和多态详解
- Java基础之封装、继承、多态、接口详解
- Java基础与案例开发详解の抽象和封装
- JAVA从零单排-----继承、封装和多态详解
- java中封装 关键字 构造方法 等用法详解
- java封装
- JAVA 封装
- 【封装】 JAVA
- Java封装
- java--封装
- Java封装
- 打个招呼
- 学生大本营
- (转)游戏程序员养成计划
- 漫谈.NET开发中的字符串编码
- 输入十进制以二进制输出
- java封装详解
- Java类基础
- (转)如何成为一名专家级的开发人员
- (献给学习Java的程序员)Java语言学习六大要点
- Java开发注意事项
- 献给IT同行的志士
- Java多态性详解
- Java多线程技术方法大全及分析
- 对于JAVA编程语言学习方式的选择