3.抽象类(shape)

3 抽象类
定义一个抽象类shape,包括公有的计算面积area方法,计算体积volume方法,输出基本信息方法printinfo(三个方法均为抽象方法)。
从shape派生point类,增加私有数据成员x,y坐标,以及构造方法。从point派生circle类,增加私有数据成员半径r,以及构造方法。
从circle派生cylinder类,增加私有数据成员高度h,以及构造方法。
在main方法中,定义shape类的对象,引用派生类的对象,输出三类对象的基本信息,面积,体积。

public class Test {
	public static void main(String[] args) {
		System.out.println("Point");
		shape sp1 = new Point(2, 2);
		sp1.printinfo();
		System.out.println("Circle");
		shape sp2 = new Circle(2);
		sp2.printinfo();
		sp2.area();
		System.out.println("Cylinder");
		shape sp3 = new Cylinder(2);
		sp3.printinfo();
		sp3.volume();
	}
}

abstract class shape {
	abstract void area();

	abstract void printinfo();

	abstract void volume();
}

class Point extends shape {
	private int x, y;

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

	int getx() {
		return x;
	}

	int gety() {
		return y;
	}

	@Override
	void area() {
		// TODO Auto-generated method stub

	}

	@Override
	void printinfo() {
		// TODO Auto-generated method stub
		System.out.println(getx() + "," + gety());
	}

	@Override
	void volume() {
		// TODO Auto-generated method stub

	}

}

class Circle extends Point {
	private int r;

	public Circle(int r) {
		super(2, 2);
		this.r = r;
	}

	int getr() {
		return r;
	}

	void area() {
		System.out.println("area:" + r * r * 3.14);
	}

	void printinfo() {
		System.out.println(getx() + "," + gety() + "," + getr());
	}
}

class Cylinder extends Circle {
	private int h;

	Cylinder(int h) {
		super(2);
		this.h = h;
	}

	int geth() {
		return h;
	}

	void printinfo() {
		System.out.println(getx() + "," + gety() + "," + getr() + "," + geth());
	}

	void volume() {
		System.out.println("volume:" + 3.14 * Math.pow(super.getr(), 2) * geth());
	}
}

你可能感兴趣的:(JAVA,抽象类,java)