首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Java面向對象實戰:Shape抽象類與矩形/圓形多態計算面積周長

     編輯:程式設計疑難解答

題目需求

設計抽象類Shape,包含抽象方法area()和perimeter()。子類Rect(矩形)和Circle(圓形)實現具體計算邏輯,主程序演示多態調用。

標準實現代碼

public class ShapeTest {
    // 內部類演示,實際項目建議獨立文件
    abstract static class Shape {
        public abstract double area();
        public abstract double perimeter();
    }

    static class Rect extends Shape {
        private final double width, length;
        public Rect(double w, double l) { this.width = w; this.length = l; }
        @Override public double area() { return width * length; }
        @Override public double perimeter() { return 2 * (width + length); }
    }

    static class Circle extends Shape {
        private final double r;
        public Circle(double r) { this.r = r; }
        @Override public double area() { return Math.PI * r * r; }
        @Override public double perimeter() { return 2 * Math.PI * r; }
    }

    public static void main(String[] args) {
        Shape rect = new Rect(2, 3);
        System.out.println("矩形周長:" + rect.perimeter()); // 10.0
        System.out.println("矩形面積:" + rect.area());     // 6.0

        Shape circle = new Circle(1); // 單位圓
        System.out.println("圓形周長:" + circle.perimeter()); // 6.283...
        System.out.println("圓形面積:" + circle.area());     // 3.141...
    }
}

核心知識點解析

  1. 抽象類 vs 接口: 有共同狀態(字段)用抽象類,純行為規範用接口
  2. 多態本質: 父類引用指向子類對象,調用重寫方法執行子類邏輯
  3. final字段: 構造器初始化後不可變,保證不可變性
  4. Math.PI: 雙精度π常量,比手寫3.14精確

進階擴展練習

  • 新增Triangle類,構造器驗證三角形不等式
  • 引入Comparable<Shape>按面積排序
  • 使用Stream API批量計算總面積:shapes.stream().mapToDouble(Shape::area).sum()
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved