【问题标题】:Abstract classes and interface抽象类和接口
【发布时间】:2014-04-12 12:50:45
【问题描述】:

默认情况下,接口中的数据成员是静态的和最终的。 static是因为不能实例化,为什么是final呢?

另一个问题是即使抽象类也不能实例化,那为什么它可以有一个非静态数据成员??

【问题讨论】:

  • 在枚举接口之前包含很多常量
  • 我认为这是一个很好的问题,可能的答案是因为 JLS 这么说的。

标签: java interface abstract-class


【解决方案1】:

接口变量是静态的,因为 Java 接口不能单独实例化;变量的值必须在不存在实例的静态上下文中分配。 final修饰符确保分配给接口变量的值是一个真正的常量,程序代码不能重新分配。

我不建议将变量放在接口中,因为接口主要用作其类的蓝图。

为什么抽象类可以有非静态数据成员?

静态变量是与一个类相关联的变量,而不是该类的对象。一般来说,抽象类的目的是为骨架提供一些非抽象行为,但其他部分仍需由子类填充,子类也可以定义功能并使用抽象类的变量。

【讨论】:

    【解决方案2】:
    and the other question is even the abstract classes can not be instantiated,
    then why it can have a non static data member??
    

    因为在抽象类中,您可以定义尽可能多的功能,然后由其子类使用。

    【讨论】:

      猜你喜欢
      • 2017-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-06
      • 2016-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多