欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-03-22 11:24:58
...

定义一个接口用来实现两个对象的比较。
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;
			}

		}
	}

}