根据 http://www.cs.cornell.edu/courses/cs211/2006sp/Lectures/L08-abstraction/08_abstraction.html
抽象有两种形式。一是函数抽象,二是数据抽象。但是抽象类在哪里适合呢?据我所知,抽象类是一个完全不同的概念,尽管名称暗示它与 OOP 原则有关。
有人可以对此有所了解吗?
最佳答案
这些是非常不同的概念。
抽象类似于黑盒的概念。输入进去,黑盒做点什么,输出出来。黑匣子里发生了什么并不重要,你只需要知道它是有效的。一个真实的例子是java的散列函数,用户只需要知道它对输入值进行散列,对于用户如何散列数字并不重要。黑匣子是抽象的。关键是您不必知道它是如何工作的,只要知道它就知道。
抽象类(至少在 Java 中)是接口(interface)和完整 OOP 类的混合体。接口(interface)定义了任何扩展类必须具有的方法,它在代码中约定它将正确实现接口(interface)并确保一切都按预期工作。抽象类具有这些空方法(协议(protocol)),并且还具有可以调用的完全实现的方法。
关于oop - 抽象与抽象类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12593917/