oop - 封装和抽象之间的区别

标签 oop language-agnostic encapsulation abstraction

我今天去面试了。我有一个来自OOP的问题,关于封装抽象之间的区别?

我回答说,封装基本上是将数据成员和成员函数绑定(bind)到一个名为的单个单元中。而抽象基本上是为了隐藏实现的复杂性并为用户提供轻松的访问。我以为她会同意我的回答。但她质疑,如果两者的目的都是隐藏信息,那么两者的实际区别是什么?我无法给她任何答案。

在提出这个问题之前,我阅读了 StackOverFlow 上有关这两个 OOP 概念之间差异的其他帖子。但我发现自己无法说服面试官。

谁能用最简单的例子来证明它的合理性吗?

最佳答案

封装隐藏了在类中可能经常更改的变量或某些实现,以防止外部人员直接访问它。他们必须通过 getter 和 setter 方法访问它。

抽象也用于隐藏某些东西,但更高程度(类、接口(interface))。使用抽象类(或接口(interface))的客户并不关心它是什么,他们只需要知道它能做什么。

关于oop - 封装和抽象之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15176356/

相关文章:

java - 如何更好地解决在类 API 系统上存在具有服务依赖性的实体的问题?

php - 使用构造函数创建新对象时出现 undefined variable 错误

c - 什么是蹦床功能?

c# 如何使用 Property

ruby-on-rails-3 - 如何不封装 Coffeescript

java - 关于基类和派生类的实现问题

java - 访问其他包中的 protected 方法?

c++ - For 循环是否总是至少执行一次?

algorithm - PCA:这个算法有什么问题?

ios - 在类(class)开始时运行代码