构造函数不接受通过它传递的参数

时间:2021-04-23 03:48:17

标签: java types constructor abstract

public abstract class shape {
    protected double volume;
    protected double surface;
}

public class cube extends shape {
    public double side;
    public double newSide;

    public cube(double side) {
        side = newSide;
    }

    public void volume(double newSide){
        System.out.println (newSide);
    }
}

public class shapes {
    public static void main(String[] args) {
        cube a = new cube(5);
        a.volume();
    }
}

这会输出错误:

constructor cube in class cube cannot be applied to given types;
cube a = new cube(5.5);
required: double
found:    no arguments
reason: actual and formal argument lists differ in length

我已将所有变量设置为双倍,所以不知道为什么它会抱怨。

2 个答案:

答案 0 :(得分:2)

首先,你的构造函数是错误的。应该是

public cube(double side) {
        this.side = side;
    }

并且您收到错误是因为您为音量设置了一个参数 -

 public void volume(double newSide){
        System.out.println (newSide);
    }

改成

public void volume(){
    System.out.println(side);
}

在java中,你应该总是将类名大写。应该是立方体。

答案 1 :(得分:1)

  1. 由于您没有通过继承 Shape 类做任何事情,所以我忽略了该类。
  2. 正如 JordanKobeWade 所说,您在构造函数中错误地进行了赋值,并且您还使用参数声明了 volume 方法,但您在没有参数的情况下调用了它。然后你得到了一个错误。
  3. 如果您只是想将一个值传递给另一个类并打印它,那么下面的代码就可以了。

Cube.java

public class Cube {

public double side;

public Cube(double side) {
    this.side = side;
}

public void volume(){
    System.out.println (side);
}

}

和 Shapes.java

public class Shapes {

public static void main(String[] args) {
    Cube a = new Cube(5);
    a.volume();
}
}