【问题标题】:Can an interface hold any instance variables? [duplicate]接口可以保存任何实例变量吗?
【发布时间】:2015-06-22 09:14:15
【问题描述】:

接口可以保存任何实例变量吗?在我的讲师规范中,它说接口中不允许有实例变量。但我研究过,有人说它只能包含final 实例变量。如果它可以保存final 实例变量,那么该变量在接口中到底能起到什么作用呢?提前致谢!

【问题讨论】:

  • 不,任何变量都将隐含为public finalstatic,这意味着它不是实例变量,而是类变量。
  • 你从哪里找到接口可以保存实例变量的信息?在 Stackoverflow 上?请给个链接好吗?

标签: java


【解决方案1】:

接口本身并不拥有自己的实例变量,因为默认情况下,接口内部变量是静态的和最终的。但是在实现接口时可以显示相同的目的,因为接口对象/实例是类类型的。

可以说是通过接口引用的对象变量。

    class sample implements interfacee {
String xyz = "hello";
      }

【讨论】:

    【解决方案2】:

    首先我们需要了解接口的作用是什么。 因此,默认情况下接口具有抽象修饰符。

    1) 所以不能为接口创建对象。由于接口中没有实例变量的作用,因此无法创建此类对象。

    无法为接口创建对象,因此不支持相同的构造函数。

    2) 声明的接口变量默认为public、static和final,必须在声明时初始化。

    3) 使用静态,您不能将其称为实例变量,您可以通过它来调用它。

    interface_filename.interface_variablename
    

    没有接口不能有实例变量。

    【讨论】:

      【解决方案3】:

      接口中声明的变量默认为publicstaticfinal。所以你可以使用接口来定义常量。

      你可以阅读更多关于这个Here

      【讨论】:

        【解决方案4】:

        在接口中声明的变量是公共的、静态的、最终的(默认情况下)使其不是接口的实例变量。

        例如:

        Interface abc{int a; // compiler will ask to assign value, since it is final}
        

        【讨论】:

          【解决方案5】:

          默认情况下,无论您在定义变量时是否提及这些修饰符,接口变量都将始终为 public static final。因此,您永远不能在接口中拥有实例变量。

          【讨论】:

            【解决方案6】:
            • 接口中声明的变量默认为public、static和final。

            • 这些是静态的,因此您不能将其称为实例变量。

            【讨论】:

              【解决方案7】:

              接口中声明的变量默认为publicstaticfinal。由于它是静态的,因此不能将其称为实例变量。

              【讨论】:

                猜你喜欢
                • 2023-03-10
                • 2017-05-25
                • 1970-01-01
                • 1970-01-01
                • 2021-08-27
                • 2011-08-07
                • 1970-01-01
                • 2015-08-01
                • 2019-01-03
                相关资源
                最近更新 更多