1、题目
定义一个名为Square的类表示正方形,它有一个名为length的成员变量表示边长、一个带参数的构造方法;覆盖父类的equals()方法,当边长相等时认为两个Square对象相等,覆盖父类的toString()方法,要求当调用该方法时输出Square对象,格式为Square[length=100],这里100是边长,编码实现上述功能;
2、代码内容
正方形类
package com.hzcollege.shape;
import java.util.Objects;
/**
* 正方形类
*
* @author hhh
* @version 1.8.0
*/
public class Square {
/**
* 正方形边长
*/
private double length;
/**
* equals
* 重写父类的equals()方法
* 当边长相等时认为两个Square对象相等
*
* @param o
* @return 两个对象是否相等的结果
*/
@Override
public boolean equals(Object o) {
//instanceof关键字用来判断o是否属于Square
if (o instanceof Square)
return this.length == ((Square) o).length;
return false;
}
/**
* toString
* 重写父类的toString()方法
* 返回格式为Square[length=100],这里100是边长
*
* @return Square[length=length]
*/
@Override
public String toString() {
return "Square[" +
"length=" + length +
']';
}
/**
* Square
* Square类的带参构造方法
*
* @param length
*/
public Square(double length) {
this.length = length;
}
/**
* getLength
* 获取正方体的边长
*
* @return 正方体边长
*/
public double getLength() {
return length;
}
/**
* setLength
* 修改正方体的边长
*
* @param length
*/
public void setLength(double length) {
this.length = length;
}
}
测试类
package com.hzcollege.Demo;
import com.hzcollege.shape.Square;
/**
* 正方形测试类
*
* @author hhh
* @version 1.8.0
*/
public class DemoSquare {
public static void main(String[] args) {
//创建Square类实例,并传入参数
Square sq1 = new Square(111);
Square sq2 = new Square(222);
Square sq3 = new Square(111);
System.out.println("sq1与sq2是否相等: " + sq1.toString() + "\t" + sq2.toString() + "\t" + sq1.equals(sq2));
System.out.println("sq1与sq3是否相等: " + sq1.toString() + "\t" + sq3.toString() + "\t" + sq1.equals(sq3));
}
}
3、运行结果
4、总结
通过这次实验学会了如何重写equals()方法和toString()方法,重写的时候要加上@Override关键字
以及重写equals()方法时学会了如何灵活使用instanceof关键字用