为什么接口变量总是静态的,为什么抽象类总是静态的?

时间:2015-02-24 01:37:15

标签: java oop

我知道接口变量总是静态的,因为我们不能创建接口的对象。但为什么抽象类变量总是不是静态的呢?我们也不能制作抽象类的对象

3 个答案:

答案 0 :(得分:0)

这是因为抽象类的字段然后由所有子类继承并且可以由它们使用。因此,您可以在抽象类中实现处理与此类字段相关的逻辑的方法。您可以将抽象类视为部分完成的实现;因为它是部分完成的,所以在子类完成之前不能构造它。

答案 1 :(得分:0)

全部由implementsextends关键字解释:您实现接口的功能但扩展 (可能是抽象的)类的能力。

当您扩展时,您将继承实例中的所有字段和方法。 一旦扩展它就有抽象类的实例:你正在为它添加/更改功能,而接口只是一个空壳,你必须用行为“填写”。

答案 2 :(得分:0)

接口和抽象类之间的主要区别在于 - 接口只是契约,它们用于指定随后具体实现的方法的签名必须有,并且接口中的所有方法都是隐式abstract

相比之下,抽象类是类,它们可以使用默认实现的非抽象方法。

引自JLS for the definition of an interface

  

接口声明引入了一个新的引用类型,其成员是类,接口,常量和抽象方法。这种类型没有实现,但是其他不相关的类可以通过为其抽象方法提供实现来实现它。

the definition of an abtract class

  

抽象类是一个不完整或被认为不完整的类。

虽然接口除了指定实现它们的类的模式之外什么都不做,但是抽象类可以做更多 - 你可以定义它们的行为 - 因此你实际上可以提供它们的方法的具体实现以及定义它们的状态(即实例变量)。

相关问题