案例描述:
长方形和圆形都属于几何图形,都有周长和面积,并且它们都有自己的周长和面积计算公式。使用抽象类的知识设计一个程序,可以计算不同图形的面积和周长。
运行结果:
代码如下:
创建抽象类:
/** * 2022/3/20 */ public abstract class Shape { // 获取面积 abstract double Area(); // 获取周长 abstract double Perimeter(); }
创建长方形类和正方形类继承抽象类:
/** * 2022/3/20 */ public class Circular extends Shape{ // 圆形周长:2Πr ,面积:Πr的平方 private double radius = 0; // 半径 private final double PI = 3.14; // 圆周率 public Circular(double radius) { this.radius = radius; } @Override double Area() { // 面积 return PI*radius*radius; } @Override double Perimeter() { // 周长 return 2*radius*PI; } }
/** * 2022/3/20 */ public class Rectangle extends Shape{ // 长方形面积:长*宽,周长:2*(长+宽) private double length = 0; // 长 private double width = 0; // 宽 public Rectangle(double length, double width) { this.length = length; this.width = width; } @Override double Area() { // 面积 return length*width; } @Override double Perimeter() { // 周长 return 2*(length+width); } }
创建计算周长与面积的类:
/** * 2022/3/20 */ public class ShapeCaculate { // 创建可以计算任意子类面积的方法 public void calArea(Shape shape){ System.out.println(shape.Area()); } // 创建可以计算任意子类周长的方法 public void calPerimeter(Shape shape){ System.out.println(shape.Perimeter()); } }
最后创建测试类:
import java.util.Scanner; /** * 2022/3/20 */ public class Demo { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.println("请输入要计算的长方形的长和宽:"); double length = in.nextDouble(); double width = in.nextDouble(); System.out.println("请输入要计算的圆形的半径:"); double radius = in.nextDouble(); // 创建图形计算器对象 ShapeCaculate sc = new ShapeCaculate(); // 创建长方形和圆形对象 Rectangle r = new Rectangle(length,width); Circular c = new Circular(radius); System.out.println("长方形的周长为"); // 通过计算机对象调方法,实现输出 sc.calPerimeter(r); System.out.println("长方形的面积为:"); sc.calArea(r); System.out.println("圆形的周长为:"); sc.calPerimeter(c); System.out.println("圆形的面积为:"); sc.calArea(c); } }