问题描述
根据geeksforgeeks.org/encapsulation-in-java封装=数据隐藏+抽象?如果是,那么我可以看到数据隐藏,但这里的抽象在哪里?
有些人以此作为封装的例子
class Person
{
private String name;
private int age;
public void setName(String name){
this.name = name;
}
public String getName(){
return this.name;
}
public void setAge(int age){
this.age = age;
}
public int getAge(){
return this.age;
}
}
有人说这不是封装的例子。参考:https://www.youtube.com/watch?v=tjyZWqJkNpc (还有这个视频里教的人java真的很好,很难相信他会错)
那么什么是真正的封装?
哪个定义是正确的?
(仅当您知道否则忽略此问题和标签时才回答,因为我是 stackoverflow 的新手,我不知道您如何提问的规则。我只是想消除我的疑虑)
解决方法
封装可用于这两个目的。在java中,封装是通过类实现的,类提供私有、公共等访问控制。当人们编码他们的类时,每个程序员都可以设置访问权限以防止其他类对象的不当使用。通过这种方式,可以进行数据隐藏。并且课堂用户不必知道甚至对他们关闭的细节。对封装信息的访问(类有什么成员,其他私有方法是什么,等等)是有限的,这使得程序员只专注于他们应该做什么,无论实现有多复杂。所以在我看来,封装可以说是包含了抽象的概念。