[qq]136451825[/qq][code]package lianxi;
/*题目:对象作为接口中方法的参变量
* 定义一个圆的接口CircleObject,成员变量有圆周率PI,成员方法有比较两个圆对象大小的方法compareTO()。
* 定义类CirCle实现接口CircleObject,方法compareTo()比较两个圆面积的大小。
* 定义描述圆柱的类Column实现接口CirCleObject方法compareTo()比较两个圆柱体积的大小。
*/
interface CircleObject
{
public static final double PI=3.14;
public abstract int compareTo(Object o);
}
class Circle implements CircleObject
{
double radius;
Circle(double radius)
{
this.radius=radius;
}
double getArea()//计算圆的面积
{
return this.radius*radius*PI;
}
public int compareTo(Object o)
{
double thisArea=getArea();
//父类引用变量执行强制转换后才能付给子类变量
Circle c=(Circle)o;
double objArea=c.getArea();
if(thisArea>objArea)
return 1;
else if(thisArea<objArea)
return 0;
else
return -1;
}
}
class Column implements CircleObject
{
double radius;
double height;
Column(double radius,double height)
{
this.radius=radius;
this.height=height;
}
public double getVolume()//计算圆柱体体积
{
return radius*height*2*PI;
}
public int compareTo(Object o)//覆盖接口中的方法,比较两个Column对象体积大小
{
double thisVolume=getVolume();
//父类引用变量值性强制类型转换后才能赋给子类
Column co1=(Column)o;
double objVolume=co1.getVolume();
if(thisVolume>objVolume)
return 1;
else if(thisVolume==objVolume)
return 0;
else
return -1;
}
}
public class Example6_3 {
public static void main(String[] args) {
Circle c1=new Circle(5.5);
Circle c2=new Circle(6.0);
int i=c1.compareTo(c2); //比较c1和c2的面积大小
switch(i)
{
case 1:
System.out.println("圆才c1的面积大于圆c2");
break;
case 0:
System.out.println("圆c2的面积大于圆c1");
break;
case -1:
System.out.println("圆c1和圆c2的面积相等!");
}
Column co1=new Column(1.1,14.0);
Column co2=new Column(2.2,15.0);
int j=co1.compareTo(co2);
switch(j)
{
case 1:
System.out.println("圆柱co1的体积大于圆柱co2");
break;
case 0:
System.out.println("圆柱co1的体积等于圆柱co2");
break;
case -1:
System.out.println("圆柱co1的体积小于圆柱co2");
}
}
}