首页 > 解决方案 > 接口和继承。(错误说明方法不是抽象的。我该如何纠正?)

问题描述

编写一个程序来创建一个接口,您必须在其中声明一个变量int x= 20并创建一个抽象类。在该类中再次声明变量int x=10。创建一个名为test继承抽象类和接口的新类。在该类中创建一个方法 print 并打印 x 的所有值。

interface A
{
    int x = 20;
    void abc(); 
}
abstract class C implements A
{
    void def();
    {
        int x = 10;
    }
}
class test extends C
{
    static void print()
    {
        test obj = new test();
        obj.abc();
        System.out.println(x);
        test obj1 = new test();
        obj.def();
        System.out.println(x);
    }
    public static void main(String arg[])
}

标签: javainheritancemethodsinterfaceextends

解决方案


我不确定我是否完全理解这个问题,但我们开始吧:

首先,您要声明一个带有默认值为A的变量的接口x20

interface A {
    int x = 20;
}

然后是一个抽象类C,它实现A并覆盖了将x其设置为的值10

abstract class C implements A {
    int x = 10;
}

那么这在您的要求中并不是很清楚,但我认为展示您想要展示的内容的最佳方式是拥有 2 个类,一个实现类,A一个扩展类C。两者都有一个print()显示其值的方法x。让我们分别称它们TestATestC

class TestA implements A {

    void print() {
        System.out.println(x);
    }

}
class TestC extends C {

    void print() {
        System.out.println(x);
    }

}

现在,您可以拥有一个Test实例化 aTestA和 aTestC并调用它们的print()方法的类。

class Test {
    public static void main(String[] args) {
        new TestA().print();
        new TestC().print();
    }
}

所以现在当你运行时Test,它会输出:

20
10

所以这意味着在实现 的类中,默认情况下A的值x20(如TestA)。但是您可以覆盖该值并将其更改为您想要的任何值(如TestC)。


推荐阅读