【发布时间】:2026-01-27 23:05:01
【问题描述】:
抽象类和接口在 Java 中扮演着非常重要的角色,在某些情况下它们也有自己的重要性。它们具有某些特殊特性。它们之间存在一些可观察到的差异。让我描述其中的一些。
接口和抽象类之间的主要区别之一是抽象类永远不能被实例化,而接口却可以。
显然,它们都不能声明为 final,因为它们将被其他一些非抽象类继承。
它们都不能有静态方法。既不是具体的也不是抽象的(抽象的静态方法确实而且事实上根本不存在)。
接口永远不可能有具体的方法(具有实际实现的方法),但是抽象类也可以有具体的方法。
接口不能有构造函数,但是抽象类可以有。
这里可能会出现两个明显的问题。
一个抽象类永远不能被实例化,因为它本质上不是一个完全实现的类,而且它的完全实现要求它被其他一些非抽象类继承。如果是这样,那么抽象类不应该有它自己的构造函数,因为构造函数隐式返回它自己的类的对象,而抽象类本身不能被实例化,因此,它不应该有一个构造函数它是自己的。
接口看起来比抽象类更好也更适合使用,因为它施加的限制比抽象类施加的限制要少。在哪些非常具体的情况中,接口是有用的,而在哪些非常具体的情况中,抽象类是合适的?希望!粗体字会被考虑很多。
【问题讨论】:
-
关于构造函数的那部分对我来说听起来不对。
-
无法实例化接口。实现接口的类可以是(如果不是抽象的)。
-
我担心你的一些“观察”是更多的想象。你不能实例化接口,你可以在抽象类中拥有静态方法
-
实际上,如果您想在扩展类中强制执行常见的创建行为,您可能希望在抽象类中实现构造函数。另一方面,接口本身不能被实例化,你只能有实现类的实例。
-
与其写下你自己问题的答案,不如编辑你的问题并删除不正确的陈述。当您提出问题时,将答案留给其他人。
标签: java interface abstract-class