Java 试图实现多态性,但出现错误:方法未重写或实现超类型中的方法

Java 试图实现多态性,但出现错误:方法未重写或实现超类型中的方法,java,Java,我得到以下错误。请帮忙 错误:方法不重写或实现超类型中的方法 class Point2D { double x; double y; public double getX() { return x; } public double getY() { return y; } public Point2D(double x, double y) { this.x = x; t

我得到以下错误。请帮忙

错误:方法不重写或实现超类型中的方法

class Point2D {
    double x;
    double y;

    public double getX() {
        return x;
    }

    public double getY() {
        return y;
    }

    public Point2D(double x, double y) {
        this.x = x;
        this.y = y;
    }
    public double dist2D(Point2D p) {
        x = (int) Math.ceil(Math.sqrt(Math.pow((p.getX() - x), 2) + Math.pow((p.getY() - y), 2)));
        return x;
    }
    public static void printDistance(Double d) {
        System.out.println("2D distance =" + d);
    }
}

class Point3D extends Point2D {

    double z;

    public double getZ() {
        return z;
    }

    @Override
    public static void printDistance(Double d) {
        System.out.println("3D distance =" + d);
    }

    public Point3D(double x, double y, double z) {
        super(x, y);
        this.z = z;
    }
    public double dist3D(Point3D p) {
        return Math.ceil(Math.sqrt(Math.pow((p.getX() - x), 2) + Math.pow((p.getY() - y), 2) + +Math.pow((p.getZ() - z), 2)));
    }
}

public class Solution {

    public static void main(String[] args) {

        Point3D p1 = new Point3D(1, 2, 3);
        Point3D p2 = new Point3D(4, 5, 6);
        double d2 = p1.dist2D(p2);
        double d3 = p1.dist3D(p2);
        Point2D p = new Point2D(0, 0);
        p.printDistance(d2);
        p = p1;
        p.printDistance(d3);
    }
}
预期产出:

2D距离=5

三维距离=6

错误:方法不重写或实现超类型中的方法

class Point2D {
    double x;
    double y;

    public double getX() {
        return x;
    }

    public double getY() {
        return y;
    }

    public Point2D(double x, double y) {
        this.x = x;
        this.y = y;
    }
    public double dist2D(Point2D p) {
        x = (int) Math.ceil(Math.sqrt(Math.pow((p.getX() - x), 2) + Math.pow((p.getY() - y), 2)));
        return x;
    }
    public static void printDistance(Double d) {
        System.out.println("2D distance =" + d);
    }
}

class Point3D extends Point2D {

    double z;

    public double getZ() {
        return z;
    }

    @Override
    public static void printDistance(Double d) {
        System.out.println("3D distance =" + d);
    }

    public Point3D(double x, double y, double z) {
        super(x, y);
        this.z = z;
    }
    public double dist3D(Point3D p) {
        return Math.ceil(Math.sqrt(Math.pow((p.getX() - x), 2) + Math.pow((p.getY() - y), 2) + +Math.pow((p.getZ() - z), 2)));
    }
}

public class Solution {

    public static void main(String[] args) {

        Point3D p1 = new Point3D(1, 2, 3);
        Point3D p2 = new Point3D(4, 5, 6);
        double d2 = p1.dist2D(p2);
        double d3 = p1.dist3D(p2);
        Point2D p = new Point2D(0, 0);
        p.printDistance(d2);
        p = p1;
        p.printDistance(d3);
    }
}

请告诉我更多信息,静态方法不能被重写,尽管它们可能会被重载。
如果删除注释@Override并使用Point3D类调用该方法,代码将正常工作。

无法重写静态方法。请看本页: