信息隐藏和封装有什么区别?
What is the difference between information hiding and encapsulation?
我知道由于研究存在差异,但我只能找到它们之间的相似之处......我希望有人能澄清差异,如果你能为每个例子提供一个真正有帮助的例子。 Java 程序也请把这个程序算作封装或信息隐藏,甚至两者都算
class DogsinHouse {
private int dogs;
public int getdog() {
return dogs;
}
public void setdog(int amountOfDogsNow) {
dogs = amountOfDogsNow;
}
}
您 post 的代码部分是两者的一个例子。封装是 Java class 具有状态(存储在对象中的信息)和行为(对象可以执行的操作,或者更确切地说是方法)的技术。当您调用在 class A 和 class B 中定义的方法时,您正在使用该方法而不知道其实现,只是使用 public 接口。
信息隐藏这是将实例变量声明为私有(或受保护)的原则:它提供稳定的接口并保护程序免受错误影响(作为来自不应访问的代码部分的变量修改到上述变量)。
基本上:
使用信息隐藏进行封装:
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 中,同时使用封装和信息隐藏是一个很好的做法。
我知道由于研究存在差异,但我只能找到它们之间的相似之处......我希望有人能澄清差异,如果你能为每个例子提供一个真正有帮助的例子。 Java 程序也请把这个程序算作封装或信息隐藏,甚至两者都算
class DogsinHouse {
private int dogs;
public int getdog() {
return dogs;
}
public void setdog(int amountOfDogsNow) {
dogs = amountOfDogsNow;
}
}
您 post 的代码部分是两者的一个例子。封装是 Java class 具有状态(存储在对象中的信息)和行为(对象可以执行的操作,或者更确切地说是方法)的技术。当您调用在 class A 和 class B 中定义的方法时,您正在使用该方法而不知道其实现,只是使用 public 接口。
信息隐藏这是将实例变量声明为私有(或受保护)的原则:它提供稳定的接口并保护程序免受错误影响(作为来自不应访问的代码部分的变量修改到上述变量)。
基本上:
使用信息隐藏进行封装:
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 中,同时使用封装和信息隐藏是一个很好的做法。