【问题标题】:What is the difference between information hiding and encapsulation? [duplicate]信息隐藏和封装有什么区别? [复制]
【发布时间】:2015-11-30 02:18:34
【问题描述】:

我知道由于研究而存在差异,但我只能找到它们之间的相似之处......我希望有人能澄清差异,并且如果你可以为每个例子提供一个真正有帮助的例子。 Java程序也请这个程序算作封装或信息隐藏,甚至两者兼而有之

 class DogsinHouse {
   private int dogs;
   public int getdog() {
     return dogs;
   }

   public void setdog(int amountOfDogsNow) {
     dogs = amountOfDogsNow;
   }
 }

【问题讨论】:

  • 简短回答:信息隐藏(也称为数据隐私)是指使用公共、受保护和私有等访问修饰符来限制对成员(方法和字段)的访问。封装是指将相关的状态和行为收集到一个单一的“胶囊”中,在 OOP 中,它是指一个类,它封装了它完成工作所需的状态和行为。相关概念是耦合和内聚。

标签: java oop encapsulation


【解决方案1】:

您发布的代码部分是两者的示例。封装是 Java 类具有状态(存储在对象中的信息)和行为(对象可以执行的操作,或者更确切地说是方法)的技术。当您在 A 类和 B 类中调用定义在 A 类中的方法时,您正在使用该方法而不知道其实现,只是使用公共接口。

Information Hiding 这是将 istance 变量声明为私有(或受保护)的原则:它提供了一个稳定的接口并保护程序免受错误(作为不应访问的代码部分的变量修改)上述变量)。

基本上:

使用信息隐藏的封装:

public class Person {
    private String name;
    private int age;

    public Person() {
    // ...
    }

    //getters and setters
 }

无信息隐藏的封装:

public class Person {
    public String name;
    public int age;

    public Person() {
    // ...
    }

    //getters and setters
 }

在 OOP 中,同时使用封装和信息隐藏是一种很好的做法。

【讨论】:

    猜你喜欢
    • 2012-12-04
    • 1970-01-01
    • 2017-02-05
    • 2014-09-21
    • 1970-01-01
    • 2016-07-07
    • 2013-08-02
    • 2017-11-28
    • 1970-01-01
    相关资源
    最近更新 更多