您的位置:首页 > 编程语言 > Java开发

Java杂谈之接口和继承的经典案例

2014-08-12 18:48 357 查看
以下是关于接口和的一个经典案例。

包含Shape接口(形状),Point类(点),Circle类(圆),Column类(圆柱),Test类(测试)

一些注意点和知识在其中的注释中已经说明了,就不额外赘述了。

1.Shape接口:

package JavaInterface;

public interface Shape {
	public abstract double area();

	public abstract double volume();

	public abstract String getName();
}


2.Point类:

package JavaInterface;

public class Point implements Shape {
	private int x;
	private int y;

	public Point() {
		this.x = 0;
		this.y = 0;
	}

	public Point(int x, int y) {
		this.x = x;
		this.y = y;
	}

	public int getX() {
		return x;
	}

	public void setX(int x) {
		this.x = x;
	}

	public int getY() {
		return y;
	}

	public void setY(int y) {
		this.y = y;
	}

	@Override
	public double area() {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public double volume() {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public String getName() {
		// TODO Auto-generated method stub
		return "点:[" + this.x + "," + this.y + "]";
	}

}


3.Circle类:

package JavaInterface;

public class Circle extends Point implements Shape {
	private int r;

	public Circle() {
		this.r = 0;
	}

	public Circle(int x, int y, int r) {
		super(x, y);
		this.r = r;
	}
	
	@Override
	public double area() {
		return Math.PI * r*r;
	}
	
	@Override
	public String getName() {
		return "圆:半径=" + this.r;
	}

	public int getR() {
		return r;
	}

	public void setR(int r) {
		this.r = r;
	}
	

}


4.Column类:

package JavaInterface;

public class Column extends Circle {
	private int h;

	public Column() {
		this.h = 0;
	}

	public Column(int x, int y, int r, int h) {
		super(x, y, r);
		this.h = h;
	}

	@Override
	public String getName() {
		return "圆柱:高度=" + this.h;
	}

	@Override
	public double area() {
		return super.area() * 2 + 2 * Math.PI * h * super.getR();
	}

	@Override
	public double volume() {
		return super.area() * h;
	}
}


5.Test类:

package JavaInterface;

public class Test {
	public static void main(String[] args) {
		//圆
		//将对象的引用定义为接口,即面向接口的编程
		Shape sc = new Circle(2,4,8);
		Circle c = new Circle(2,4,8);
		System.out.println("类型:"+c.getName());
		System.out.println("面积:"+c.area());
		System.out.println("体积:"+c.volume());
		//圆柱
		Column col = new Column(2,4,8,2);
		System.out.println("类型:"+col.getName());
		System.out.println("面积:"+col.area());
		System.out.println("体积:"+col.volume());
	}

}


6.结果截图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: