Java——Object重写toString和equals

这篇博客介绍了如何在Java中设计并实现Point和Circle类,包括它们的构造方法、成员变量的get和set方法、距离计算、覆盖父类的toString和equals方法。此外,还涵盖了UML类图的设计和测试用例,用于验证点和圆之间的相等性和位置关系。
摘要由CSDN通过智能技术生成

(仅记录个人的学习之路)
题目如下:
(1) 设计一个名为Point的类,代表一个以x坐标和y坐标表示的点。该类包括:
a) 一个创建点(0,0)的无参构造方法;
b) 以指定坐标构建点的构造方法;
c) 成员变量x和y的get和set方法;
d) 一个名为distance的静态方法,返回两个MyPoint对象之间的距离。
提示:

  • 方法头:public static double distance(Point p1, Point p2)
  • 调用Math类的sqrt方法计算平方根,方法定义如下: public static double sqrt(double a)
    //返回正确舍入的 double 值的正平方根。

e) 一个名为distance的方法,返回从该点到MyPoint类型的指定点之间的距离;
提示:

  • 方法头: public double distance(Point p)
  • 调用上面的静态distance方法计算该点和指定点之间的距离。

f) 覆盖父类的toString()方法,返回当前点对象的描述;
g) 覆盖父类的equals(Object obj)方法,如果两个点的x,y坐标相同,返回true,否则返回false。
提示:方法头不要写成 public boolean equals(Point obj)
(2) 编写一个Circle类,包括:
a) 一个Point类型的私有成员变量o,表示圆心;
b) 一个double类型的私有成员变量radius,表示半径;
c) 一个无参的构造方法,创建一个圆心在原点,且半径为1的默认的圆;
d) 一个带参数的构造方法,创建指定圆心o和半径radius的圆;
e) 一个带参数的构造方法,创建指定圆心坐标x和y以及半径radius的圆;
f) 两个成员变量的修改器和读取器;
g) 一个返回圆面积的方法getArea();
h) 一个返回圆周长的方法getPerimeter();
i) 如果给定点p在这个圆内,那么方法contains(Point p)返回true,否则返回false;
j) 如果给定的圆在这个圆内,那么方法contains(Circle circle) 返回true,否则返回false;
k) 如果给定的圆和这个圆重叠,那么方法overlaps(Circle circle) 返回true,否则返回false。
l) 覆盖父类的toString()方法,返回当前圆对象的描述;
m) 覆盖父类的equals(Object obj)方法,如果两个圆的圆心和半径相同,返回true,否则返回false。

(注:equals(Object obj)方法重写了Object类的equals方法,因此参数obj是Object类型,题中需要①判断该obj对象是否是Circle类型,利用obj instanceof Circle语句;②若是,则本对象与obj对象比较圆心及半径,如果均相等,则返回true,否则返回false;③比较圆心时,调用Point的equals(Object obj)方法)

(3) 要求:
a) 画出UML类图(注意,包含两个类,且要体现两个类之间关系,Object类可以省略)。
b) 编程实现两个类。
c) 编写一个测试程序,
① 创建点p1(1,2),p2(3,4),p3(1,2),判断p1和p2是否相等,判断p1和p3是否相等,并分别输出结果;
② 创建圆c1(1,2,6)、c2(1,2,5)、c3(1,2,6)、c4(0,0,1)、c5(7,3,7)、c6(90,100,6)【注;前2个数字是圆心坐标,第3个为半径】,实现下列判断并显示判断结果:
l c1和c2是否相等;c1和c3是否相等;
l 输出c1和c2的对象描述;
l 分别判断点(7,8),(3,4)是否在圆c1内;
l 判断c4是否包含在c1,c4是否包含在c6,c4是否与c6重叠,c4是否与c5重叠。

代码如下:

package TestObject;

class Point{
   
	private double x;
	private double y;
	public Point() {
   
		x = 0;
		y = 0;
	}
	public Point(double x, double y) {
   
		this.x = x;
		this.y = y;
	}
	public double getX() {
   
		return x;
	}
	public void setX(double x) {
   
		this.x = x;
	}
	public double getY() {
   
		return y;
	}
	public void setY(double y) {
   
		this.y = y;
	}
	public static double distance(Point p1, Point p2) {
   
		return Math.sqrt((p1.getX() - p2.getX()) * (p1.getX() - p2.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值