定义一个接口用来实现两个对象的比较。

本文介绍如何通过定义接口实现对象之间的比较,以圆形和矩形为例,展示如何比较两个图形的尺寸。首先定义了一个通用的比较接口,然后在具体的图形类中实现了这个接口,用于比较两个圆形的半径和两个矩形的面积。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

定义一个接口用来实现两个对象的比较。
interface CompareObject{
    public int compareTo(Object o);   //若返回值是 0 , 代表相等; 若为正数,代表当前对象大;负数代表当前对象小
 }
定义一个Circle类。
定义一个ComparableCircle类,继承Circle类并且实现CompareObject接口。在ComparableCircle类中给出接口中方法compareTo的实现体,用来比较两个圆的半径大小。
定义一个测试类TestInterface,创建两个ComparableCircle对象,调用compareTo方法比较两个类的半径大小。
思考:参照上述做法定义矩形类Rectangle和ComparableRectangle类,在ComparableRectangle类中给出compareTo方法的实现,比较两个矩形的面积大小。
 

package com.xatu.接口;

public interface CompareObject {

	public int compareTo(Object o);

	class Circle {
		private double radius;

		public Circle(double radius) {
			this.radius = radius;
		}

		public double getRadius() {
			return radius;
		}

		public void setRadius(double radius) {
			this.radius = radius;
		}

		@Override
		public String toString() {
			return "半径" + radius;
		}

	}

	class ComparableCircle extends Circle implements CompareObject {

		public ComparableCircle(double radius) {
			super(radius);
		}

		@Override
		public int compareTo(Object o) {
			if (o instanceof Circle) {// 如果不进行预判出现ClassCastException
				if (this.getRadius() == ((Circle) o).getRadius()) {
					return 0;
				} else if (this.getRadius() < ((Circle) o).getRadius()) {
					return -1;
				} else {
					return 1;
				}

			}
			return 2;

		}
	}

class TestInterface {
		public static void main(String[] args) {
			CompareObject c1 = new ComparableCircle(10);// 可以使用多态和本态,优先使用多态(站高望远)
			CompareObject c2 = new ComparableCircle(10);
			int compRs = c1.compareTo(c2);
			System.out.println(compRs);
			switch (compRs) {
			case 0:
				System.out.println("相等");
				break;
			case 1:
				System.out.println("右边大");
				break;
			case -1:
				System.out.println("左边大");
				break;

			default:
				break;
			}

		}
	}

}

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值