java定义一个名为Traingle的类表示三角形,包含length成员变量表示边长,带一个参数的构造方法,要求该类对象覆盖父类的equals()
时间: 2024-05-23 14:09:09 浏览: 85
方法,用于比较两个Triangle对象是否相等。具体实现可以参考以下代码:
public class Triangle {
private double length; // 边长
public Triangle(double length) {
this.length = length;
}
@Override
public boolean equals(Object obj) {
if (obj instanceof Triangle) {
Triangle other = (Triangle) obj;
return this.length == other.length;
}
return false;
}
}
在这里,我们利用了Java中的多态性,将equals方法重写为对象的运行时类型所特有的行为。这种方法的优点在于,子类可以覆盖父类的同名方法,实现特定的比较方式,简化了程序的设计和调用。
相关问题
定义一个名为Traingle 的类表示三角形,包含 length成员变量表示边长,带一个参数的构造方法,要求该类对象覆盖父类的equals()方法,当边长相等时认为两个对象相等。覆盖父类的 toString()方法,要求当调用该方法时输出对象格式如:三角形边长是:length=50,这里 50 是边长,由键盘输入。编写一个程序测试equals()和 toString()方法的使用。
下面是实现该题目的代码:
```java
import java.util.Scanner;
public class Triangle {
private int length;
public Triangle(int length) {
this.length = length;
}
@Override
public boolean equals(Object obj) {
if (obj == this) {
return true;
}
if (!(obj instanceof Triangle)) {
return false;
}
Triangle other = (Triangle) obj;
return this.length == other.length;
}
@Override
public String toString() {
return "三角形边长是:length=" + length;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入三角形的边长:");
int length = scanner.nextInt();
Triangle triangle1 = new Triangle(length);
Triangle triangle2 = new Triangle(length);
System.out.println("triangle1.equals(triangle2):" + triangle1.equals(triangle2));
System.out.println("triangle1.toString():" + triangle1.toString());
System.out.println("triangle2.toString():" + triangle2.toString());
}
}
```
程序运行结果如下:
```
请输入三角形的边长:50
triangle1.equals(triangle2):true
triangle1.toString():三角形边长是:length=50
triangle2.toString():三角形边长是:length=50
```
可以看到,程序正确实现了 Triangle 类,并且覆盖了 equals() 和 toString() 方法,并且在测试时得到了正确的结果。
阅读全文