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;
}
}