当前位置:网站首页>3.抽象類(shape)

3.抽象類(shape)

2022-06-22 16:17:00 小木榮

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());
	}
}
原网站

版权声明
本文为[小木榮]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/06/202206221502449030.html