Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 抽象类和接口_Java_Interface_Abstract Class - Fatal编程技术网

Java 抽象类和接口

Java 抽象类和接口,java,interface,abstract-class,Java,Interface,Abstract Class,在接口中,默认情况下,数据成员是静态的和最终的。 它是静态的,因为它不能被实例化,但为什么它是最终的 另一个问题是即使抽象类也不能实例化,那么为什么它可以有一个非静态的数据成员 and the other question is even the abstract classes can not be instantiated, then why it can have a non static data member?? 因为在抽象类中,您可以定义任意多的功能,然后它的子类可以使用这些功能。

在接口中,默认情况下,数据成员是静态的和最终的。 它是静态的,因为它不能被实例化,但为什么它是最终的

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

and the other question is even the abstract classes can not be instantiated,
then why it can have a non static data member??

因为在抽象类中,您可以定义任意多的功能,然后它的子类可以使用这些功能。

接口变量是静态的,因为Java接口本身无法实例化;变量的值必须在不存在实例的静态上下文中赋值。最后一个修饰符确保分配给接口变量的值是不能由程序代码重新分配的真常量

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

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


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

在Enum接口包含很多常量之前,我认为这是一个好问题,可能的答案是类似的,因为JLS这样说。