有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java CircleObject不是抽象的,并且不会覆盖图中的抽象方法

编译下面的代码时,出现以下错误:

Abstrct.java:7: error: CircleObject is not abstract and does not override abstract method changePosition(int,int) in Figure
class CircleObject extends Figure
^
Abstrct.java:14: error: Kd is not abstract and does not override abstract method draw() in Figure
class Kd extends Figure
^
2 errors 

使用

abstract class Figure {

    int x, y;

    abstract void changePosition(int newX, int newY);

    abstract void draw();
}

class CircleObject extends Figure {

    void draw() {
        System.out.println("Draw method called");
    }
}

class Kd extends Figure {

    void changePosition(int newX, int newY) {
        System.out.println("Change Position method called");
    }
}

class Abstrct {

    public static void main(String args[]) {
        Figure q = new CircleObject();
        q.draw();
        Figure p = new Kd();
        p.changePosition(2, 4);
    }
}

共 (2) 个答案

  1. # 1 楼答案

    当您将一个类定义为抽象类时,扩展它的所有类都需要实现所有方法

    abstract class Figure {
        int x, y;
        abstract void changePosition(int newX, int newY);
        abstract void draw();
    }
    
    class CircleObject extends Figure {
        void draw() {
            System.out.println("Draw method called");
        }
        void changePosition(int newX, int newY){        
        }
    }
    
    class Kd extends Figure {
        void changePosition(int newX, int newY) {
            System.out.println("Change Position method called");
        }
        void draw(){        
        }
    }
    
  2. # 2 楼答案

    扩展抽象类的类要么实现其父类的所有抽象方法,要么本身是抽象的

    所以CircleObject类也必须实现changePosition(),或者本身就是一个抽象类

    Kd类也是如此