• 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一样大");
    		} 
    	}
    }
    

  • 相关阅读:
    JDBC的一些代码
    mysql
    【转载】如何简单地理解Python中的if __name__ == '__main__'
    【转载】用Scikit-Learn构建K-近邻算法,分类MNIST数据集
    数据科学入门---可视化数据
    Sum It Up
    Blue Jeans
    Zball in Tina Town
    Island Transport
    CD
  • 原文地址:https://www.cnblogs.com/klvchen/p/14543221.html
Copyright © 2020-2023  润新知