我今天去面试了。我有一个来自OOP的问题,关于封装和抽象之间的区别?
我回答说,封装基本上是将数据成员和成员函数绑定(bind)到一个名为类的单个单元中。而抽象基本上是为了隐藏实现的复杂性并为用户提供轻松的访问。我以为她会同意我的回答。但她质疑,如果两者的目的都是隐藏信息,那么两者的实际区别是什么?我无法给她任何答案。
在提出这个问题之前,我阅读了 StackOverFlow 上有关这两个 OOP 概念之间差异的其他帖子。但我发现自己无法说服面试官。
谁能用最简单的例子来证明它的合理性吗?
最佳答案
封装隐藏了在类中可能经常更改的变量或某些实现,以防止外部人员直接访问它。他们必须通过 getter 和 setter 方法访问它。
抽象也用于隐藏某些东西,但更高程度(类、接口(interface))。使用抽象类(或接口(interface))的客户并不关心它是什么,他们只需要知道它能做什么。
关于oop - 封装和抽象之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15176356/