gpt4 book ai didi

java - 重写 equals() 方法以检查共享继承的对象中的维度相等性

转载 作者:行者123 更新时间:2023-12-01 13:10:16 25 4
gpt4 key购买 nike

我已经为那些可能需要的人提供了与此特定问题相关的所有四个类(class)。

主要问题是在 main() 方法中发现的,因为 main 方法中的最后一行抛出一个错误,内容如下:

method equals in class java.lang.Object cannot be applied to given types;

required: java.lang.Object

found: Box2, Cube2

reason: actual and formal argument lists differ in length.

您在此处使用的运算符不能用于您所使用的值的类型。您在这里使用了错误的类型,或者使用了错误的运算符。

我相信这个问题可能源于我重写 equals() 方法(位于 Box 类中)的方法不正确。

该方法旨在打印所需的输出,但却返回错误。

任何有关我如何正确重写此方法的见解都将受到高度赞赏,因为我不知所措。

public class TestNew
{
public static void main(String []args)
{
Rectangle2 one = new Rectangle2(5, 20);
Box2 two = new Box2(4, 4, 4);
Box2 three = new Box2(4, 10, 5);
Cube2 four = new Cube2(4);

showEffectBoth(one);
showEffectBoth(two);
showEffectBoth(three);
showEffectBoth(four);
System.out.println(equals(two, four));
}

public static void showEffectBoth(Rectangle2 r)
{
System.out.println(r);
}
}

public class Rectangle2
{
// instance variables
private int length;
private int width;

/**
* Constructor for objects of class rectangle
*/
public Rectangle2(int l, int w)
{
// initialise instance variables
length = l;
width = w;
}

public int getLength()
{
return length;
}

public int getWidth()
{
return width;
}

public String toString()
{
return "Rectangle - " + length + " X " + width;
}
}

public class Box2 extends Rectangle2
{
// instance variables
private int height;

/**
* Constructor for objects of class box
*/
public Box2(int l, int w, int h)
{
// call superclass
super(l, w);
// initialise instance variables
height = h;
}

public int getHeight()
{
return height;
}

public String equals(Box2 o, Cube2 p)
{
if(o.getLength() + o.getWidth() + o.getHeight() == p.getLength() * 3)
{
return o.toString() + " is the same size as " + p.toString();
}
else
{
return o.toString() + " is not the same size as " + p.toString();
}
}

public String toString()
{
return "Box - " + getLength() + " X " + getWidth() + " X " + height;
}
}

public class Cube2 extends Box2
{
/**
* Constructor for objects of class Cube.
*/
public Cube2(int l)
{
// call superclass
super(l, l, l);
}

public String toString()
{
return "Cube - " + getLength() + " X " + getLength() + " X " + getLength();
}
}

最佳答案

嗯,在 TestNew 类中没有名为 equals() 并接受 2 个参数的静态方法。这就是编译器告诉你的。为了能够调用方法,该方法必须存在。

关于java - 重写 equals() 方法以检查共享继承的对象中的维度相等性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22928870/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com