0

根据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;
    }
}

有人说这不是封装的例子。ref : https://www.youtube.com/watch?v=tjyZWqJkNpc (而且这个视频中教的人在java方面真的很好,很难相信他会错)

那么什么是真正的封装?

  1. 数据隐藏+抽象
  2. 将变量和方法分组到一个单元中

哪个定义是正确的?

(只有当你知道否则忽略这个问题和标签时才回答,因为我是stackoverflow的新手,我不知道你如何提出问题的规则。我只是想消除我的疑虑)

4

1 回答 1

0

封装可用于这两种目的。在java中,封装是通过类实现的,类提供私有、公共等访问控制。当人们编写他们的类时,每个程序员都可以设置访问权限,以防止其他类对象的不当使用。这样,数据隐藏是可用的。并且班级用户不必知道甚至对他们关闭的细节。对封装信息(类有什么成员,其他私有方法是什么等)的访问是有限的,这使得程序员只能专注于他们应该做的事情,无论实现多么复杂。所以在我看来,封装可以说包含了抽象的概念。

于 2021-05-02T06:42:25.370 回答