当前位置: 首页 > 面试题库 >

封装与信息隐藏

孟俊发
2023-03-14
问题内容

封装和信息隐藏之间到底有什么区别?

好吧,我知道将字段设为私有,然后将字段的setter和getter设为封装。但是封装只是这个意思吗?

假设我有一个如下所述的课程。

public Class IsThisEncapsulation
{
    public int age;

    public void setAge(int age)
    {
       this.age=age;
    }

    public int getAge()
    {
       return age;
    }
}

现在,类IsThisEncapsulation是封装的示例吗?

现在将上述类中的“年龄”字段设为私有可以实现信息隐藏吗?

您能给我清楚的例子,以帮助我清楚地区分这些概念吗?


问题答案:

好吧,我知道将字段设为私有,然后将字段的setter和getter封装起来。但是,封装仅仅是这个意思吗?

-–>封装是一个OOP概念,其中对象状态(类字段)及其行为(方法)被包装在一起。Java使用提供封装class

信息隐藏:

->用于限制对某些对象组件的访问的机制。上面的示例age私有化时信息隐藏的情况。

最初,信息/数据隐藏被视为封装的一部分,并且封装的定义为:

  • 一种语言机制,用于限制对某些对象组件的访问。
  • 一种语言构造,它有助于将数据与对该数据进行操作的方法(或其他功能)捆绑在一起。

第二个定义的动机是,在许多OOP语言中,组件的隐藏不是自动的或可以被覆盖的;因此,信息隐藏被那些喜欢第二种定义的人定义为一个单独的概念。

参考:wikipage



 类似资料:
  • 信息隐藏和封装之间有什么区别? 我已经读过,封装意味着将数据和应该对其进行操作的过程捆绑在一起。如果是这样,那么下面的类是否实现了封装? 现在声明数据属性会实现信息隐藏吗?

  • 了解上节有关封装的知识后,本节通过完整的例子再次实现封装。要求编写表示图书的 Book 类,实现以下需求: 基本信息包括图书名称(bookName)、总页数(pagelbtalNum),其中页数不能少于 200 页,否则输出错误信息,并赋予默认值 200。 为各个属性设置赋值和取值方法。 具有 details() 方法,该方法在控制台输出每本图书的名称和总页数。 编写 BookTest 测试类,为

  • 类通常对类的客户隐藏其实现细节,即所谓的信息隐藏。下列以堆栈数据结构作为信息隐藏的例子。 可以把堆栈看成一堆盘子。将盘子放在堆中时,总是放在顶部(压入堆栈),从堆中取下盘子时,总是从顶上取(称为弹出堆栈)。堆栈是后进先出(last-in,first-out;LIFO)的数据结构,最后放进堆栈的项目最先从堆栈中取出。 程序员可以生成堆栈类,对客户隐藏实现细节。堆栈可以方便地用数组实现(或用第15章“

  • 我浏览了很多帖子,但没有抓住要点。 我们能不能说:抽象=封装数据隐藏 或者不止这些!! 谢谢

  • 问题内容: 如果下面的代码会产生相同的结果,为什么还要使用封装? 封装的主要好处是能够修改我们已实现的代码而不会破坏其他使用我们代码的人的代码。 但是我可以在不使用封装的情况下使用此好处,对吗?因为每个对象的字段都彼此不同。 问题答案: 您的问题很有趣。我将尽力为您解答。 封装 背后的主要思想 是向 其他用户 隐藏数据及其实现 细节。如果我们将数据成员设为 私有 ,则只能在同一类中访问它。没有其他

  • 根据Geeksforgeks的说法。java封装中的组织/封装=数据隐藏抽象?如果是,那么我可以看到数据隐藏,但抽象在哪里? 有些人将此作为封装的示例 有些人说这不是一个封装的例子。参考:https://www.youtube.com/watch?v=tjyZWqJkNpc(在这个视频中教学的人在java上真的很好,很难相信他会错) 那么什么是真正的封装呢? 数据隐藏抽象 将变量和方法分组到单个单