我是靠谱客的博主 真实电灯胆,最近开发中收集的这篇文章主要介绍java encapsulation_Java Encapsulation vs Abstraction,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

你们中的大多数人都同意封装和抽象在一起会带来很多混乱。 大多数博客只会进一步增加混乱。 让我们解决这个难题。

在上一篇文章“ Understanding abstraction in java ”之后,我开始撰写这篇文章。 我的目标是了解Java中的封装及其与抽象的关系。 一开始,我就开始陷入前所未有的混乱之中。 在浏览了多个小时并阅读了一些写得很好以及令人困惑的博客条目之后,我能够做出一些清晰的理解。 跟随我的足迹

Encapsulation in simple words

将类中的数据和方法与实现隐藏(通过访问控制)结合起来通常称为封装。 结果是具有特征和行为的数据类型。 封装本质上既有信息隐藏又有实现隐藏。

Encapsulation in Detail

我在某处阅读:“ 无论发生什么变化,都将其封装 ”。 它被引用为著名的设计原则。 因此,在任何类中,运行时中的数据都可能发生更改,将来的发行版中可能会更改实现。 因此,封装既适用于数据,也适用于实现。

访问控制或实现隐藏将边界置于数据类型或类中,这有两个重要原因。 首先是建立客户端程序员可以使用和不能使用的功能。 这直接导致了第二个原因,那就是将接口与实现分开。

如果您确定客户端程序员除了将消息发送到公共接口之外什么也不能做,那么您可以随意更改不公开的任何内容(例如,程序包访问,受保护或私有),而不会破坏客户端代码。 封装可以帮助您实现这一保证。

Encapsulation vs Abstraction

如果您浏览了my last post一篇my last post ,您将看到抽象本质上是一个主意,这有助于设置准则。 封装是我们实现所需抽象的机制。

简而言之,从OOAD的角度来看:Abstraction is more about ' What ' a class can do. [ Idea ]

Encapsulation is more about ' How ' to achieve that functionality. [ Implementation ]

我在很多博客上都看到了与此理论相矛盾的地方。 因此,如果您也不同意这一点,请忍受我。 另外,我将要求您对与主题相关的想法发表评论。 我会很乐意尝试联系或否定。

展望未来,我将以我们众所周知的HashMap类为例。 此类负责存储键值对,基于键进行搜索并执行更多操作。 从外部,客户端代码仅知道方法名称及其行为。 它调用了这些方法,并快乐地生活着。 这实际上是抽象准则。 抽象表示,客户端代码应调用添加键值对的方法,基于键检索值的方法等。 应该怎么做? 不是抽象业务。

当您开始编写实际代码时,封装就到了。 您编写HashMap.Entry类,并创建类型Entry[]变量table 。 然后,将所有此类内容声明为私有,并仅允许公众访问put()和get()方法等。这实际上是封装。 A realization of your desired abstraction 。

我希望您对java encapsulation有更多的了解,它difference with abstraction 。

Happy learning !!

最后

以上就是真实电灯胆为你收集整理的java encapsulation_Java Encapsulation vs Abstraction的全部内容,希望文章能够帮你解决java encapsulation_Java Encapsulation vs Abstraction所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部