Java 练习(接口练习)

定义一个接口用来实现两个对象的比较。
interface CompareObject{
public int compareTo(Object o); //若返回值是0,代表相等;若为正数,代表当前对象大;负数代表当前对象小
}

  • 定义一个 Circle 类,声明 radius 属性,提供 getter 和 setter 方法
  • 定义一个 ComparableCircle 类,继承 Circle 类并且实现 CompareObject 接口。在 ComparableCircle 类中给出接口中方法 compareTo 的实现体,用来比较两个圆的半径大小。
  • 定义一个测试类 InterfaceTest,创建两个 ComparableCircle 对象,调用 compareTo 方法比较两个类的半径大小。
  • 思考:参照上述做法定义矩形类 Rectangle 和 ComparableRectangle 类,在 ComparableRectangle 类中给出 compareTo 方法的实现,比较两个矩形的面积大小。

CompareObject.java

package com.klvchen.exer3;

public interface CompareObject {

	int compareTo(Object o);
}

Circle.java

package com.klvchen.exer3;

public class Circle {
	private Double radius;

	public Double getRadius() {
		return radius;
	}

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

	public Circle(Double radius) {
		super();
		this.radius = radius;
	}

	public Circle() {
		super();
	}
}

ComparableCircle.java

package com.klvchen.exer3;

public class ComparableCircle extends Circle implements CompareObject {
	
	public ComparableCircle(double radius) {
		super(radius);
	}
	
	@Override
	public int compareTo(Object o) {
		if(this == o) {
			return 0;
		}
		if(o instanceof ComparableCircle) {
			ComparableCircle c = (ComparableCircle)o;
			//错误的:
//			return (int)(this.getRadius() - c.getRadius());
			
			//方法一:
//			if(this.getRadius() > c.getRadius()) {
//				return 1;
//			}else if(this.getRadius() < c.getRadius()) {
//				return -1;
//			}else {
//				return 0;
//			}
			//方法二:当属性 radius 声明为 Double 类型时,可以调用包装类的方法
			return this.getRadius().compareTo(c.getRadius());
			
		} else {
			throw new RuntimeException("传入的数据类型不匹配");
		}
	}
}

ComparaCircleTest.java

package com.klvchen.exer3;

public class ComparaCircleTest {
	public static void main(String[] args) {
		
		ComparableCircle c1 = new ComparableCircle(3.4);
		ComparableCircle c2 = new ComparableCircle(3.6);
		
		int compareValue = c1.compareTo(c2);
		if( compareValue > 0) {
			System.out.println("c1对象大");
		}else if(compareValue < 0) {
			System.out.println("c2对象大");
		}else {
			System.out.println("c1与c2一样大");
		} 
	}
}

原文地址:https://www.cnblogs.com/klvchen/p/14543221.html