gpt4 book ai didi

java - 我很困惑。如何以及何时使用 Object 作为参数和参数在 Java OOP 中有用?

转载 作者:行者123 更新时间:2023-11-29 06:52:04 29 4
gpt4 key购买 nike

嘿伙计们,我知道这有点简单,但它真的让我感到困惑。

我这里有一个简单的代码来计算 Box 的体积...这种方法对我来说没问题...

但我遇到了一个主题,说你可以使用一个对象作为参数,所以我试了一下。

虽然这个文件编译得很好,但我真的不明白将对象作为参数的意义。我只是编造了这个 boolean 方法,但我真的不明白这里发生了什么。

我们如何以及何时使用对象作为参数和/或参数?

class Box {
private double width;
private double height;
private double length;

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

public double getVolume() {
double volume = width * height * length;
return volume;
}

public boolean testObject(Box a) { //I just made this up but how is it useful?
if (a.width == width) {
return true;
} else return false;
}
}


public class TestDrive {

public static void main(String[] args) {
Box b1 = new Box (8, 5, 10);

System.out.println("b1 volume is = " + b1.getVolume());

System.out.println(b1.testObject(b1)); // I don't know how this works
}
}

最佳答案

为了更好地理解它,将方法重命名为 isEquallyWide 以适合您的代码。
那么 b1.isEquallyWide(b1) 返回 true 是有道理的,因为 b1 和它本身一样宽。一般来说,将对象传递给同一对象上的方法没有多大意义(可能有一些用例)

另一方面,创建第二个框 Box b2 = new Box (999, 5, 10); 然后调用 b1.isEquallyWide(b2) 返回 false因为盒子的宽度不一样。 b2.isEquallyWide(b1) 也是如此。 isEquallyWide 是可交换的,因为它在两种情况下返回相同的值。

如果您要创建一个方法 isWiderThan,则 b1.isWiderThan(b1) 将返回 false,b1.isWiderThan(b2) 将返回也为 false 但 b2.isWiderThan(b1) 将返回 true,此方法不再是可交换的。在这种情况下,行为会有所不同,具体取决于传入的对象和调用方法的对象。

关于java - 我很困惑。如何以及何时使用 Object 作为参数和参数在 Java OOP 中有用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44670911/

29 4 0