133 - Shape类-2

Description

定义一个形状类Shape,提供计算周长getPerimeter()和面积getArea()的函数
定义一个子类正方形类Square继承自Shape类,拥有边长属性,提供构造函数,能够计算周长getPerimeter()和面积getArea()
定义一个子类长方形类Rectangle继承自Square类,拥有长、宽属性,提供构造函数,能够计算周长getPerimeter()和面积getArea()
定义一个子类圆形类Circle继承自Shape,拥有半径属性,提供构造函数,能够计算周长getPerimeter()和面积getArea()

在main函数中,分别构造三个Shape类的变量,分别指向一个Square、Rectangle、Circle对象,并输出他们的周长、面积.
import java.util.Scanner;

public class Main {
	public static void main(String [] args) {
		Scanner sc = new Scanner(System.in);
		double k = sc.nextDouble();
		Square s = new Square(k);
		System.out.println(String.format("%.2f",s.getPerimeter())+" "+String.format("%.2f", s.getArea()));
		
		k = sc.nextDouble();
		double l = sc.nextDouble();
		Rectangle r = new Rectangle(k,l);
		System.out.println(String.format("%.2f",r.getPerimeter())+" "+String.format("%.2f", r.getArea()));
			
		k = sc.nextDouble();
		Circle c = new Circle(k);
		System.out.println(String.format("%.2f",c.getPerimeter())+" "+String.format("%.2f", c.getArea()));
		
		
		sc.close();
	}

}

class Shape{
	//int Bc;
	//Shape(){}
	double getPerimeter() {
		return 0;
	}
	
    double getArea() {
    	return 0;
    }
}
class Square extends Shape{
	double l ;//长
	Square(double l){
		this.l = l;
	}
	double getPerimeter() {
		return l*4;
	}
	
	double getArea() {
		return l*l;
	}
	
}

class Rectangle extends Square{

	double h;//宽
	Rectangle(double l,double h) {
		super(l);
		this.h = h;
		// TODO Auto-generated constructor stub
	}
	
	double getPerimeter() {
		return 2.0*(l+h);
	}
	
	double getArea() {
		return l*h;
	}
	
}

class Circle extends Shape{
	double r;//半径
	Circle(double r){
		this.r = r;
	}
	
	double getPerimeter() {
		return 2.0*Math.PI*r;
	}
	
	double getArea() {
		return Math.PI*r*r;
	}
	
}

 

你可能感兴趣的:(Java)