java - 尽管实现了,具体类方法仍然从抽象类中抛出异常

标签 java class exception abstract

我有一个抽象类 Automobile,它有一个名为 move 的未实现方法 所以

public abstract class Automobile {
   public void move() {
       throw new UnsupportedOperationException();
   }
}

我有一个具体的类,它扩展了我的抽象类并实现了 move 方法。我的问题是该方法不断抛出 UnsupportedOperationException

public class Car extends Automobile{
  int x; 
   public void move(){
    x++;
   }
}

最佳答案

在您的具体类中可能有多种原因:也许您的具体类实际上并未扩展Foo?或者它可能在其主体的某处调用 super.move()

正确的方法不是抛出异常,而是将类和方法定义为抽象,以强制子类覆盖它。

public abstract class Foo {
    public abstract void move();
}

请注意,如果 Foo 仅具有抽象方法(如上例所示),那么这就是您想要的接口(interface),而不是抽象类。另外,您应该命名它来定义行为

public interface Moving { 
    void move();
}

然后:

public class MovingObject implements Moving {
    ....
    @Override
    public void move() {
       // your implementation
    }
    ....
}

关于java - 尽管实现了,具体类方法仍然从抽象类中抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8788862/

相关文章:

java - java.net.SocketException : Connection reset and java.net.SocketException : Broken Pipe? 有什么区别

c++ - 如何用 C++ 编写类库,就像我们为函数编写的类库一样

python - 初始化 Python 类中的静态字段

C++ 错误代码 C2065 : '<class name>' undeclared identifier, 即使它应该在另一个 .h 文件中声明

java - EAFP。在 Java 中请求宽恕而不是许可

java - 很难选择...... IO vs NIO

java - 为什么在 -server 模式下运行的 Java 说版本是 "mixed-mode"?

java - WebSphere MQ wmq.jmsra 在 MDB 中出现异常后循环

android - 我确实需要帮助来理解运行时错误

java - Hibernate validator 异常