微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

是封装 = 数据隐藏 + 抽象?

如何解决是封装 = 数据隐藏 + 抽象?

根据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真的很好,很难相信他会错)

那么什么是真正的封装?

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

哪个定义是正确的?

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

解决方法

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?