Java 抽象類

Description
先定義一個抽象Graphic類,有求面積的computeArea抽象方法(返回值爲面積,圓周率取3.14);
然後定義一個從Graphic派生的Circle類,有double類型的半徑,以及重寫的computeArea抽象方法。
再定義一個從Graphic派生的Rectangle類,有double類型的長和寬屬性,以及重寫的computeArea抽象方法。
要求main方法中至少包含如下代碼(這些語句不要求必須放在一起):
Graphic g;
g=new Circle(r);
g=new Rectangle(a,b);
g.computeArea();
Input
第一行輸入數據的組數N,然後有N組數據。每組數據由一個字符和幾個浮點數組成,第一個如何是'c'表示Circle,是'r'表示Rectangle;如果前面是'c',後面跟一個浮點,如果是'r'後面跟兩個浮點。
Output
圖形類型及其面積(精度保留2位)。
Sample Input
4
c 10
r 20 10
r 5 4
c 20
Sample Output
Circle:314.00
Rectangle:200.00
Rectangle:20.00
Circle:1256.00

abstract 修飾方法:

abstract + 數據類型 + 方法名(參數);

父類派生出子類後,子類再對繼承父類的抽象的方法進行定義。抽象方法一定不能用final定義。


import java.util.*;
abstract class Graphic
{
	public abstract double computeArea();
}

class Circle extends Graphic
{
	private double radius ;
	
	public Circle(double radius)
	{
		this.radius = radius;
	}
	public double computeArea()
	{
		return 3.14*radius*radius;
	}
}

class Rectangle extends Graphic
{
	private double length;
	private double  kuan;
	public Rectangle(double length,double kuan)
	{
		this.kuan = kuan;
		this.length = length;
	}
	public double computeArea()
	{
		return length*kuan ;
	}
}

public class Main {
	public static void main(String args[]){
	Scanner cin = new Scanner(System.in);
	int t,i;
	String x;
	double r,a,b;
	while(cin.hasNext()){
		t = cin.nextInt();
		for(i=0;i<t;i++)
		{
			x = cin.next();
			if(x.charAt(0)=='c')
			{
				r = cin.nextDouble();
				Graphic g;
				g=new Circle(r);
				System.out.printf("Circle:%.2f\n",g.computeArea());
			}
			if(x.charAt(0)=='r')
			{
				a = cin.nextDouble();
				b = cin.nextDouble();
				Graphic g;
				g=new Rectangle(a,b);
				System.out.printf("Rectangle:%.2f\n",g.computeArea());;
			}
		}
	}
}
}

測試數據:




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章