Java 接口和继承。(错误说明这些方法不是抽象的。如何更正?)
编写一个程序来创建一个接口,您必须在其中声明一个变量Java 接口和继承。(错误说明这些方法不是抽象的。如何更正?),java,inheritance,methods,interface,extends,Java,Inheritance,Methods,Interface,Extends,编写一个程序来创建一个接口,您必须在其中声明一个变量intx=20,并创建一个抽象类。在该类中再次声明变量intx=10。创建名为test的新类,该类继承抽象类和接口。在该类中创建一个方法print并打印x的所有值 我不确定我是否完全理解这个问题,但我们来看看: 首先,您要声明一个接口A,其中包含一个默认值为20x的变量x interface A { int x = 20; } 然后是一个抽象类C,它实现A,并重写x的值以将其设置为10 abstract class C impleme
intx=20
,并创建一个抽象类。在该类中再次声明变量intx=10
。创建名为test
的新类,该类继承抽象类和接口。在该类中创建一个方法print并打印x的所有值
我不确定我是否完全理解这个问题,但我们来看看: 首先,您要声明一个接口
A
,其中包含一个默认值为20
x的变量x
interface A {
int x = 20;
}
然后是一个抽象类C
,它实现A
,并重写x
的值以将其设置为10
abstract class C implements A {
int x = 10;
}
那么这在您的需求中不是很清楚,但是我认为显示您想要显示的内容的最佳方式是有两个类,一个实现A
,一个扩展C
。它们都有一个print()
方法,显示它们的x
值。让我们分别称它们为TestA
和TestC
class TestA implements A {
void print() {
System.out.println(x);
}
}
现在,您可以拥有一个类Test
,该类实例化TestA
和TestC
并调用它们的print()
方法
class Test {
public static void main(String[] args) {
new TestA().print();
new TestC().print();
}
}
因此,现在当您运行测试时,它会输出:
20
10
这意味着在实现a
的类中,x
的值默认为20
(如TestA
)。但是您可以覆盖该值并将其更改为您想要的任何内容(如TestC
) 删除代码>在void def()的末尾代码>为什么有方法abc
和def
?它们似乎不是练习要求的一部分,只是使问题复杂化。我认为def()
方法可能是一种抽象方法。在这两种情况下,OP的问题在于它们没有声明类级别x
,而是声明一个局部变量,因此无法打印。我想说,练习的原始说明非常不清楚。@realpoint“是的,是真的”,将重写我的答案
class Test {
public static void main(String[] args) {
new TestA().print();
new TestC().print();
}
}
20
10