当前位置: 首页 > 面试题库 >

“类型B不能是C的超接口;超级接口必须是接口”错误

谭煜
2023-03-14
问题内容

假设我有此接口A:

interface A
{
    void doThis();
    String doThat();
}

因此,我希望某些抽象类实现doThis()方法,而不是doThat()一个方法:

abstract class B implements A
{
    public void doThis()
    {
        System.out.println("do this and then "+ doThat());
    }

}

abstract class B2 implements A
{
    public void doThis()
    {
        System.out.println(doThat() + "and then do this");
    }
}

当您最终决定在常规类中实现de doThat方法时,就会出现错误:

public class C implements B
{
    public String doThat()
    {
        return "do that";
    }
}

此类导致我前面提到的错误:

“类型B不能是C的超级接口;超级接口必须是接口”

现在任何人都可以,如果这种类层次结构有效,还是应该以其他方式进行处理?


问题答案:

您必须使用 extends

public class C extends B

了解implementsextends关键字之间的区别很重要。因此,我建议您开始阅读以下问题:实现与扩展:何时使用?有什么不同?和那里的答案。



 类似资料:
  • 假设我有这个接口A: “类型B不能是C的超级接口;超级接口必须是接口” 如果这个类的层次结构是有效的,那么任何人现在都可以了,还是我应该反过来做?

  • 这和这里问的问题差不多。 但我的问题扩展了这一点。 我可以把它改成“A扩展B”,但我必须使我的方法是非静态的,这只会把我的整个系统搞砸。 我这样做了,然后它告诉我,几乎所有的其他类可能50不能引用非静态方法从类A的方法BB。

  • 我想通过google play services lib更改GoogleAdMobAdsSdk,但是当我删除GoogleAdMobAdsSdk时,我出现了一个错误:AdListener类型不能是GameActivity的超接口;超接口必须是接口。 你能帮帮我吗! PS:您可以在这里找到一部分代码:迁移到新的google play服务库 提前感谢!

  • 问题内容: 我正处于起步阶段,想全神贯注于Go。目前,我正在模拟一个API请求,该请求返回一个包含对象数组的JSON格式的字符串。我正在尝试找出最合适的方法来遍历每个记录并访问每个字段。最终,每个字段都将被写入Excel电子表格,但是现在我只想打印每个字段的键和值。 这就是我所拥有的(我会在Go Playground中提供它,但不支持HTTP请求): 一切工作正常,直到尝试循环访问包含每个记录的属

  • 问题内容: 我正在尝试在Java中使用lambda和流,但我对此很陌生。当我尝试创建lambda表达式时,我在IntelliJ中收到了此错误“ lambda转换的目标类型必须是接口” 难道我做错了什么? 问题答案: 我怀疑这只是Java的类型推断不够聪明。尝试

  • 问题内容: 目前我有这样的事情 main.go 还有我的工作包 和 我正在传递给NewJob的函数是在goroutine上每2秒执行一次,但是我想访问我传递的匿名结构…但是当我尝试访问时 编号 我越来越 t.Id未定义(类型interface {}是没有方法的接口) 但是打印t给我预期的结果 {1} 问题答案: 您必须先将其声明为兼容类型,然后才能访问其字段。