gpt4 book ai didi

java - 类不是抽象的并且不会覆盖 Java 中的错误

转载 作者:搜寻专家 更新时间:2023-10-30 21:19:59 24 4
gpt4 key购买 nike

我在使用 Java 时遇到编译时错误:

MyClass is not abstract and does not override abstract method
onClassicControllerRemovedEvent(
wiiusej.wiiusejevents.wiiuseapievents.ClassicControllerRemovedEvent)
in wiiusejevents.utils.WiimoteListener)

这是类:

import wiiusej.WiiUseApiManager;
import wiiusej.Wiimote;
import wiiusej.wiiusejevents.physicalevents.ExpansionEvent;
import wiiusej.wiiusejevents.physicalevents.IREvent;
import wiiusej.wiiusejevents.physicalevents.MotionSensingEvent;
import wiiusej.wiiusejevents.physicalevents.WiimoteButtonsEvent;
import wiiusej.wiiusejevents.utils.WiimoteListener;
import wiiusej.wiiusejevents.wiiuseapievents.DisconnectionEvent;
import wiiusej.wiiusejevents.wiiuseapievents.NunchukInsertedEvent;
import wiiusej.wiiusejevents.wiiuseapievents.NunchukRemovedEvent;
import wiiusej.wiiusejevents.wiiuseapievents.StatusEvent;


public class MyClass implements WiimoteListener{

public void onButtonsEvent(WiimoteButtonsEvent arg0) {
System.out.println(arg0);
if (arg0.isButtonAPressed()){
WiiUseApiManager.shutdown();
}
}

public void onIrEvent(IREvent arg0) {
System.out.println(arg0);
}

public void onMotionSensingEvent(MotionSensingEvent arg0) {
System.out.println(arg0);
}

public void onExpansionEvent(ExpansionEvent arg0) {
System.out.println(arg0);
}

public void onStatusEvent(StatusEvent arg0) {
System.out.println(arg0);
}

public void onDisconnectionEvent(DisconnectionEvent arg0) {
System.out.println(arg0);
}

public void onNunchukInsertedEvent(NunchukInsertedEvent arg0) {
System.out.println(arg0);
}

public void onNunchukRemovedEvent(NunchukRemovedEvent arg0) {
System.out.println(arg0);
}

public static void main(String[] args) {
Wiimote[] wiimotes = WiiUseApiManager.getWiimotes(1, true);
Wiimote wiimote = wiimotes[0];
wiimote.activateIRTRacking();
wiimote.activateMotionSensing();
wiimote.addWiiMoteEventListeners(new MyClass());
}
}

我能否更好地解释此错误的含义?

最佳答案

如何尽可能简单地重现该错误:

Java代码:

package javaapplication3;
public class JavaApplication3 {
public static void main(String[] args) {
}
}
class Cat implements Animal{

}

interface Animal{
abstract boolean roar();
}

显示此编译时错误:

Cat is not abstract and does not override abstract method roar() in Animal

为什么不能编译?

因为:

  1. 您创建了一个实现接口(interface) Animal 的 Cat 类。
  2. 名为 Animal 的接口(interface)有一个名为 roar 的抽象方法,必须重写该方法。
  3. 您没有提供方法 roar。有很多方法可以消除编译时错误。

方法一,让Cat重写抽象方法roar()

package javaapplication3;

public class JavaApplication3 {
public static void main(String[] args) {
Cat c = new Cat();
System.out.println(c.roar());
}
}
class Cat implements Animal{
public boolean roar(){
return true;
}
}

interface Animal{
abstract boolean roar();
}

方法二,把Cat改成抽象的,这样:

package javaapplication3;

public class JavaApplication3 {
public static void main(String[] args) {
Cat c;
}
}
abstract class Cat implements Animal{

}
interface Animal{
abstract boolean roar();
}

这意味着您不能再实例化 Cat。

补救措施 3,让 cat 停止执行 Animal

package javaapplication3;

public class JavaApplication3 {
public static void main(String[] args) {
Cat c = new Cat();
}
}
class Cat{

}

interface Animal{
abstract boolean roar();
}

这使得 roar() 不再是动物必须知道如何做的事情的契约。

对策三,扩展一个类而不是实现一个接口(interface)

package javaapplication3;

public class JavaApplication3 {
public static void main(String[] args) {
Cat c = new Cat();
System.out.println(c.roar());
}
}
class Cat extends Animal{

}
class Animal{
boolean roar(){
return true;
}
}

要使用的补救措施取决于表示所表示问题的最佳模型。错误在那里敦促您停止“通过布朗运动编程”。

关于java - 类不是抽象的并且不会覆盖 Java 中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16554801/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com