抽象类和接口

时间:2014-03-09 13:36:27

标签: java interface abstract-class

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

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

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

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

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

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

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