可能的复制品:
抽象 VS 信息隐藏 VS 封装
我知道这个问题可能已经在这个论坛上被问了成千上万次了,甚至网上也充满了很多关于这些概念的定义,但是所有的发音都一样,所有的使用都一样的技术词汇。例如下面的定义
封装 是将数据和操作数据的代码绑定或封装到单个实体中的过程。这样可以保证数据的安全,防止外部接口和误用。考虑封装的一种方法是作为一个保护性的包装器,它可以防止代码和数据被包装器之外定义的其他代码任意访问。
我从上面的定义中了解到,创建变量,将它们标记为私有,并为这些变量生成 getter-setter,然后使用 object 访问这些 getter 和 setter。这样,数据就隐藏在对象内部,只能通过对象访问。希望我是对的.
抽象 是 Java 中用于隐藏某些细节并只显示对象的基本特征的过程。换句话说,它处理对象(接口)的外部视图。
这就是我一直搞不懂的地方。每当我想到抽象的时候,我脑海中浮现的就是抽象类(可能是因为两者都有抽象关键字)。上面的定义说抽象意味着隐藏数据,只显示所需的细节,但这是我们在封装中已经在做的事情,对吗?那有什么区别。我也没有得到什么是外观的对象在 它处理对象的外部视图。
有没有人可以用一些现实生活中的例子或者一些程序化的例子来说明这一点。