Java上机实验之接口

//文件名:ShapeTest.java
interface Shape1//接口
{
	void Area();
}
class Circle implements Shape1//实现接口的Circle类
{
	public double x,y,r;
	public Circle(double x,double y,double r)
	{
		this.x=x;
		this.y=y;
		this.r=r;
	}
	Circle(){
		x=0.0;
		y=0.0;
		r=0.0;
	}
	public void Area()
	{
		System.out.println("我是圆形,我的心在:("+x+","+y+"),因为半径有"+r+"那么宽,所以脸有"+3.141592*r*r+"那么大.\n");
	}
}
class Square implements Shape1//实现接口的Square类
{
	public double x,y,l;
	public Square(double x,double y,double l)
	{
		this.x=x;
		this.y=y;
		this.l=l;
	}
	Square()
	{
		x=0.0;
		y=0.0;
		l=0.0;
	}
	public void Area()
	{
		System.out.println("我是正方形,我的心在:("+(x+l/2)+","+(y+l/2)+"),我的四肢都一样有"+l+"那么长\n为了和四肢协调,所以我的脸有"+l*l+"那么大\n");
	}
}
class Triangle implements Shape1
{
	public double a,b,c;
	Triangle(){
		a=0.0;
		b=0.0;
		c=0.0;
	}
	public Triangle(double a,double b,double c)
	{
		this.a=a;
		this.b=b;
		this.c=c;
	}
	public void Area()
	{
		System.out.println("我是三角形,我的脸有:"+Math.sqrt((a+b+c)*(a+b-c)*(a+c-b)*(b+c-a))/4+"那么大\n");
	}
}
public class ShapeTest
{
	public static void main(String[] args)
	{
		Shape1[] S=new Shape1[3];//定义并初始化接口数组
		S[0]=new Circle(8.0,6.0,4.0);
		S[1]=new Square(4.0,3.0,5.0);
		S[2]=new Triangle(3.0,4.0,6.0);
		System.out.println("都说这是一个看脸吃饭的时代,于是三人就讨论起来了:");
		for(int i=0;i<3;i++)
		{
			S[i].Area();//Area()被Circle、Square、Triangle类实现,故可以调用相应的Area()函数
		}
	}
}

在上面的例子中,我们首先创建了Shape1这个接口,并在后面利用Circle、Square、Triangle类实现了该接口及其Area()方法,后在main()函数中创建并初始化了接口数组(接口虽不能被实例化,但是可以创建接口数组),并依次指向利用Circle、Square、Triangle实例化的对象,再利用他们去调用各自实现的Area()方法,这样一来,看似都是接口数组S调用了Area()方法,却有不同的表现,即多态性,这就像电脑的USB接口一样,我们插上去的U盘可能是USB2.0的,也有可能是USB3.0的,但又都能通过USB接口和电脑进行通信。这就是接口的作用。

个人理解,如有不当,欢迎大家纠正!

猜你喜欢

转载自blog.csdn.net/ZC_25/article/details/78444353