当前位置: 首页 > 知识库问答 >
问题:

抽象=封装数据隐藏?

汤玉宸
2023-03-14

我浏览了很多帖子,但没有抓住要点。

我们能不能说:抽象=封装数据隐藏

或者不止这些!!

谢谢

共有1个答案

充子航
2023-03-14

这个问题更像是一个面向对象的问题#oop将是一个很好的标签,包括在这里。

回答你的问题:不,抽象不等于封装和数据隐藏。顺便说一下,抽象和封装都有数据隐藏的概念。然而,它们并不相同。

封装是关于在类中隐藏变量或方法,以防止来自外部世界的任何更改。然后我们可以通过getter/setter方法控制正在操作的内容。简单的例子是当我们有一个Person类。在这个Person类中,让我们假设我们有一个变量来跟踪年龄。现在,我们有了一个Getage()方法来返回Person的年龄;另一方面,我们修改了Setage(int age)方法,仅当传入的参数大于当前年龄时才设置新的年龄(因为我们只随着时间的推移变老...)。

public class Person {

    private int age;

    public Person(int age) { 
        this.age = age; 
    }

    public int GetAge() { 
        return age 
    }

    public void SetAge(int age) {
        if (this.age < age) { 
            this.age = age; 
        }
    }
}

抽象用于提取和突出显示将为通用抽象类或接口共享的主要功能。举个简单的例子,当我们有一个接口的I动物。在这个界面中,我们只是创建一个模板的方法吃(int NumOfBowls)和睡眠(双小时)。我们抽象出了任何动物的必要方法(这就是抽象)。下面的代码将清楚地向您展示我的意思,但我也举了一个使用继承的例子,这是面向对象编程的另一个主要概念(这里不会涵盖,因为它超出了手头问题的范围)。

public interface IAnimal {
    void Eat(int numOfBowls);
    void Sleep(double hours);
}

public class Dog : IAnimal {

    public void Eat(int numOfBowls) {
        // eat numOfBowls passed in
    }

    public void Sleep(double hours) {
        // sleep for number of hours passed in
    }

    public void Bark() { 
        Console.WriteLine("woof");
    }
}
 类似资料:
  • 根据Geeksforgeks的说法。java封装中的组织/封装=数据隐藏抽象?如果是,那么我可以看到数据隐藏,但抽象在哪里? 有些人将此作为封装的示例 有些人说这不是一个封装的例子。参考:https://www.youtube.com/watch?v=tjyZWqJkNpc(在这个视频中教学的人在java上真的很好,很难相信他会错) 那么什么是真正的封装呢? 数据隐藏抽象 将变量和方法分组到单个单

  • 有些人将抽象定义为: 抽象是通过在基本功能上提供一个层来隐藏实现细节。 对对象的用户隐藏实现细节不是封装的一部分吗? 假设动物类有函数ate(),那么给对象的用户提供这个接口是封装还是抽象?或者提供函数名使用是抽象,方法实现部分的隐藏是封装。 我真的很困惑,因为在很多地方它是抽象的,很多人说实现细节隐藏是封装? 在这个问题中,答案是: 抽象=外部对象;封装(通过信息隐藏实现)=对象内部。 那么,这

  • Truffle provides contract abstractions for interacting with your contracts. Skip ahead to the api section for a list of contract methods. 使用方法 To obtain a contract abstraction you can require it with

  • 我今天有个面试。我有一个来自OOP的问题,关于封装之间的区别 我告诉她,封装基本上是绑定数据成员 在提出这个问题之前,我阅读了StackOverFlow上的其他线程,了解这两个OOPs概念之间的区别。但我发现自己无法说服面试官。 有人能举个最简单的例子来证明吗?

  • 类通常对类的客户隐藏其实现细节,即所谓的信息隐藏。下列以堆栈数据结构作为信息隐藏的例子。 可以把堆栈看成一堆盘子。将盘子放在堆中时,总是放在顶部(压入堆栈),从堆中取下盘子时,总是从顶上取(称为弹出堆栈)。堆栈是后进先出(last-in,first-out;LIFO)的数据结构,最后放进堆栈的项目最先从堆栈中取出。 程序员可以生成堆栈类,对客户隐藏实现细节。堆栈可以方便地用数组实现(或用第15章“

  • 我正在准备一次面试,并决定重温一下我的OOP概念。有数百篇文章可供使用,但似乎每一篇文章的描述都不一样。有人说 抽象是“识别具有系统变化的公共模式的过程;抽象代表了公共模式,并提供了一种指定使用哪种变化的方法”(Richard Gabriel)。 并通过抽象的类来实现。 另一些人说 抽象意味着只向对象的客户端显示必要的细节 而且 假设您的Employee类中有一个方法“CalculateSalar