Java中什么叫封装啊?
答案:6 悬赏:40 手机版
解决时间 2021-04-26 15:56
- 提问者网友:记得曾经
- 2021-04-26 05:39
Java中什么叫封装啊?
最佳答案
- 五星知识达人网友:我住北渡口
- 2021-04-26 07:05
关于这个问题,我想举一个例子:
lz如果你接触过老的面向过程的编程,
以前封装性很差的程序是这样的
比如用C写一套处理链表的程序,他的数据和函数是分开的
数据保存在一个内存区域里,所有相关的函数,比如增加节点啊,减少节点什么的都是直接操作这个内存区域的指针
比如这样
LIST *p=.....;//开辟空间
AddNode(p,...)//这样来操作
带来了很多额外的不安全因素,因为谁都可以操作这个指针
如果你写的是一个第三方库,那么别人使用的时候完全不在你的控制之下
现在的面向对象程序则不然,
将数据和与之对应的操作(也就是方法)绑定在一个块中
比如在Java中
LinkedList list=new LinkedList();
list.add(...);
这样所有的内部结构对于外部用户都是透明的,不用管内部实现和结构,如何储存数据,都不用管内部实现(一些数据程序成员的访问权限是private protected就是为了数据安全性)
而原先的方式,数据是非封装的,因为外部程序可以随便更改数据,不利于程序的安全运行
以上提到的就属于面向对象封装性的意义,不过实际的好处还不只这些
lz有问题,欢迎给我发消息,我们可以具体讨论一下
lz如果你接触过老的面向过程的编程,
以前封装性很差的程序是这样的
比如用C写一套处理链表的程序,他的数据和函数是分开的
数据保存在一个内存区域里,所有相关的函数,比如增加节点啊,减少节点什么的都是直接操作这个内存区域的指针
比如这样
LIST *p=.....;//开辟空间
AddNode(p,...)//这样来操作
带来了很多额外的不安全因素,因为谁都可以操作这个指针
如果你写的是一个第三方库,那么别人使用的时候完全不在你的控制之下
现在的面向对象程序则不然,
将数据和与之对应的操作(也就是方法)绑定在一个块中
比如在Java中
LinkedList list=new LinkedList();
list.add(...);
这样所有的内部结构对于外部用户都是透明的,不用管内部实现和结构,如何储存数据,都不用管内部实现(一些数据程序成员的访问权限是private protected就是为了数据安全性)
而原先的方式,数据是非封装的,因为外部程序可以随便更改数据,不利于程序的安全运行
以上提到的就属于面向对象封装性的意义,不过实际的好处还不只这些
lz有问题,欢迎给我发消息,我们可以具体讨论一下
全部回答
- 1楼网友:逃夭
- 2021-04-26 12:05
封装就是在原来的基础上进行又一次封装添加一些自己的内容。比如对某些类的继承或者实现以后加进自己的逻辑就是封装了。这些不用叫真。用用就体会到了
- 2楼网友:杯酒困英雄
- 2021-04-26 11:08
保护数据成员,不让类以外的程序直接访问或修改,只能通过提供的公共的接口访问==>数据封装
方法的细节对用户是隐藏的,只要接口不变,内部的修改不会影响到外部的调用者==>方法封装
方法的细节对用户是隐藏的,只要接口不变,内部的修改不会影响到外部的调用者==>方法封装
- 3楼网友:旧脸谱
- 2021-04-26 09:36
封装:
类的封装性即不能让外面的类随意修改一个类的成员变量;
在定义一个类的成员(包括变量和方法),使用private关键字说明这个成员的访问权限,只能被这个类的其他成员方法调用,而不能被其他的类中的方法所调用;
为实现封装性,常将类的成员变量声明为private,再通过public的方法来对这个变量进行访问。对一个变量的操作,一般都有 读取和赋值操作,我们一般定义两个方法来实现这两种操作,即:getXxx()与setXxx();
一个类就是一个模块,我们应该让模块仅仅公开必须要让外界知道的内容,而隐藏其他的一切内容。再进行程序设计时,应尽量避免一个模块直接修改或操作另一个模块的数据,模块设计追求强内聚(许多功能尽量在类的内部独立完成,不让外面干预),弱耦合(提供给外部尽量少的方法调用)。
正确理解封装:
正确地封装Java类
一个设计良好的软件工程是由一些能够正确执行系统中定义好的独立任务的Java成员函数组成,这样的软件工程具有很好的扩展性。相反,那些功能混乱定义不一的函数,在重载或另一环境调用的过程中会容易发生冲突。
在Java的封装功能中,我提出了与Java封装概念相称的启发概念。每一个启发都提供了确保封装能展示封装内容的向导。在这一章节里,我将集中讲述封装类如何保证封装内容的高度统一性。我们将会看到,这些方法都大大简化了类封装的可维护性和重调用性。
可维护性
既然大家都知道重载是面向对象程序设计的很重要组成部分,那么你可以看出软件的可维护性的重要性。如果能正确地封装类,你就可以减少很多函数的更改。
在同一封装里严密地联结各个类
严密地联结封装中的各个类可以得到高凝聚的封装。如果两个类展示出很好的联结性,那么这两个类很有可能被经常地调用以提供联系方便的服务。所以当在设计你的封装时,你可以最大限度地减小封装之间的依靠性,以避免各个封装的冲突。
在同一封装里类要统一改变
显然的,当其他类改变时,各个严密结合的类也同样受到影响。任一个类的更改都会导致与这一类相关的类的相应更改,至少,类中的函数必须更改。你可以通过在同一封装里严密联结类来避免这些风险。
然而,一些联结不严密的类也被工程的其他改变而改变。在这样的情况下,你应该把这些类放在同一封装。因为独立的类改变时,它们会产生其他的负影响。
在不同封装里类不要一起调用
封装启发的可行性取决于是否封装能提供真正的联结。即使类能经常地一起被调用,它们却不能一起被改变。所认你必须把这些类进行独立封装。当然,这就意味着引入多个封装来调用独立的类。这一方法的优点是显而易见的。
在一个封装里对一个类的依赖也会产生对其他类的依赖,这是必然的。当封装中一个类改变时,整个封装都会发生变化。
在不同封装里类不要一起重载
不幸的是,即使在初始化时,一个类对象不能允许它自己去调用不同的类,就给软件升级带来不利,这样软件的可维护性就变得非常很重要。所以在不同的封装里,独立的类重载是一个最有效的方法。
关键的注意事项
在Java程序设计时,你必须注意以下几点:
Containing Change ––––封装各个类到一个单一的封装里能减少很多更改,把所有改变都集中到一个封装里有助于软件的可维护性。
Class coupling –––––当在同一封装里联结类时,你应该注意到其他类也有可能和这一个类有关。忽视这些联系会产生很多不必要的关联。
Contention ––––– 前两个启发产生比较大的封装,目的是调用;后两个启发产生比较小的封装,目的是可维护。这前后的封装会发生冲突。在开发过程中,你必须在程序结构上作出相应的改变。在程序设计开发初期,你应该选择利于软件可维护性的比较小的封装;当在开发后期,你应该选择利于软件调用的比较大的封装。
调用
当设计程序框架时,你应该集中于封装的调用,因为Java封装的调用和可维护非常的重要。当设计合理,程序就很容易的支持封装的调用功能。
类的封装性即不能让外面的类随意修改一个类的成员变量;
在定义一个类的成员(包括变量和方法),使用private关键字说明这个成员的访问权限,只能被这个类的其他成员方法调用,而不能被其他的类中的方法所调用;
为实现封装性,常将类的成员变量声明为private,再通过public的方法来对这个变量进行访问。对一个变量的操作,一般都有 读取和赋值操作,我们一般定义两个方法来实现这两种操作,即:getXxx()与setXxx();
一个类就是一个模块,我们应该让模块仅仅公开必须要让外界知道的内容,而隐藏其他的一切内容。再进行程序设计时,应尽量避免一个模块直接修改或操作另一个模块的数据,模块设计追求强内聚(许多功能尽量在类的内部独立完成,不让外面干预),弱耦合(提供给外部尽量少的方法调用)。
正确理解封装:
正确地封装Java类
一个设计良好的软件工程是由一些能够正确执行系统中定义好的独立任务的Java成员函数组成,这样的软件工程具有很好的扩展性。相反,那些功能混乱定义不一的函数,在重载或另一环境调用的过程中会容易发生冲突。
在Java的封装功能中,我提出了与Java封装概念相称的启发概念。每一个启发都提供了确保封装能展示封装内容的向导。在这一章节里,我将集中讲述封装类如何保证封装内容的高度统一性。我们将会看到,这些方法都大大简化了类封装的可维护性和重调用性。
可维护性
既然大家都知道重载是面向对象程序设计的很重要组成部分,那么你可以看出软件的可维护性的重要性。如果能正确地封装类,你就可以减少很多函数的更改。
在同一封装里严密地联结各个类
严密地联结封装中的各个类可以得到高凝聚的封装。如果两个类展示出很好的联结性,那么这两个类很有可能被经常地调用以提供联系方便的服务。所以当在设计你的封装时,你可以最大限度地减小封装之间的依靠性,以避免各个封装的冲突。
在同一封装里类要统一改变
显然的,当其他类改变时,各个严密结合的类也同样受到影响。任一个类的更改都会导致与这一类相关的类的相应更改,至少,类中的函数必须更改。你可以通过在同一封装里严密联结类来避免这些风险。
然而,一些联结不严密的类也被工程的其他改变而改变。在这样的情况下,你应该把这些类放在同一封装。因为独立的类改变时,它们会产生其他的负影响。
在不同封装里类不要一起调用
封装启发的可行性取决于是否封装能提供真正的联结。即使类能经常地一起被调用,它们却不能一起被改变。所认你必须把这些类进行独立封装。当然,这就意味着引入多个封装来调用独立的类。这一方法的优点是显而易见的。
在一个封装里对一个类的依赖也会产生对其他类的依赖,这是必然的。当封装中一个类改变时,整个封装都会发生变化。
在不同封装里类不要一起重载
不幸的是,即使在初始化时,一个类对象不能允许它自己去调用不同的类,就给软件升级带来不利,这样软件的可维护性就变得非常很重要。所以在不同的封装里,独立的类重载是一个最有效的方法。
关键的注意事项
在Java程序设计时,你必须注意以下几点:
Containing Change ––––封装各个类到一个单一的封装里能减少很多更改,把所有改变都集中到一个封装里有助于软件的可维护性。
Class coupling –––––当在同一封装里联结类时,你应该注意到其他类也有可能和这一个类有关。忽视这些联系会产生很多不必要的关联。
Contention ––––– 前两个启发产生比较大的封装,目的是调用;后两个启发产生比较小的封装,目的是可维护。这前后的封装会发生冲突。在开发过程中,你必须在程序结构上作出相应的改变。在程序设计开发初期,你应该选择利于软件可维护性的比较小的封装;当在开发后期,你应该选择利于软件调用的比较大的封装。
调用
当设计程序框架时,你应该集中于封装的调用,因为Java封装的调用和可维护非常的重要。当设计合理,程序就很容易的支持封装的调用功能。
- 4楼网友:愁杀梦里人
- 2021-04-26 08:21
封装其实在JAVA,c#等 面向对象于艳丽里面我们一直都在做
类本身就是 封装的一种体现
说通俗点 就是将一系列有关系的数据活着行为放到一个或多个类里面
而把这些操作以及数据等 放到一起 以接口的方式向外提供服务的这种组织形式就称为封装
就比如我们将对某一张表的操作都封装到了 ClassA中
外界调用时只需要知道 ClassA中相关操作的方法 以及 方法所需要的参数即可完成想要的操作 那么这里的方法就是一种接口
类本身就是 封装的一种体现
说通俗点 就是将一系列有关系的数据活着行为放到一个或多个类里面
而把这些操作以及数据等 放到一起 以接口的方式向外提供服务的这种组织形式就称为封装
就比如我们将对某一张表的操作都封装到了 ClassA中
外界调用时只需要知道 ClassA中相关操作的方法 以及 方法所需要的参数即可完成想要的操作 那么这里的方法就是一种接口
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯