不太明白我们如何在这个程序中传递对象作为参数(Java)

Ste*_*ski -3 java constructor

public class PassingObjects {

    double height;
    double width;
    double length;

    public PassingObjects(double height, double length, double width) {
        this.height = height;
        this.width = width;
        this.length = length;
    }

    public PassingObjects(PassingObjects obj) {
        height = obj.height;
        length = obj.length;
        width = obj.width;
     }

    public void calculateVolume() {
        System.out.println(this.length * this.width * this.height);
  }

    public static void main(String[] args) {
         PassingObjects obj = new PassingObjects(30, 40, 10);
         PassingObjects obj2 = new PassingObjects(obj);

         obj.calculateVolume();
         obj2.calculateVolume();


  }

}
Run Code Online (Sandbox Code Playgroud)

当我calculateVolume()从两个对象运行方法时,为什么我得到相同的值?

我不明白如何传入obj构造函数参数允许编译器知道我希望30,40和10作为参数传入.

dry*_*hip 5

您获得相同的值,因为它public PassingObjects(PassingObjects obj)是一个复制构造函数,它使用与作为参数给定的对象相同的值初始化新对象.


height = obj.height;
length = obj.length;
width = obj.width;
Run Code Online (Sandbox Code Playgroud)

在这里,您可以将参数对象中的变量值设置为此新对象.因此该calculateVolume()方法将返回相同的值.