import java.util.ArrayList;
import java.util.List;
// 抽象クラス Shape
abstract class Shape {
// 抽象メソッド calculateArea を宣言
public abstract double calculateArea();
}
// 具象クラス Circle
class Circle extends Shape {
private double radius;
// コンストラクタ
public Circle(double radius) {
this.radius = radius;
}
// calculateArea メソッドã®ã‚ªãƒ¼ãƒãƒ¼ãƒ©ã‚¤ãƒ‰
@Override
public double calculateArea() {
return Math.PI * radius * radius;
}
}
// 具象クラス Rectangle
class Rectangle extends Shape {
private double length;
private double width;
// コンストラクタ
public Rectangle(double length, double width) {
this.length = length;
this.width = width;
}
// calculateArea メソッドã®ã‚ªãƒ¼ãƒãƒ¼ãƒ©ã‚¤ãƒ‰
@Override
public double calculateArea() {
return length * width;
}
}
// メインクラス
public class Main {
public static void main(String[] args) {
// Shape åž‹ã®ãƒªã‚¹ãƒˆã‚’作æˆ
List<Shape> shapes = new ArrayList<>();
// Circle インスタンスをリストã«è¿½åŠ
shapes.add(new Circle(5.0));
// Rectangle インスタンスをリストã«è¿½åŠ
shapes.add(new Rectangle(4.0, 6.0));
// ãƒãƒªãƒ¢ãƒ¼ãƒ•ィズムを使用ã—ã¦ç•°ãªã‚‹å½¢çжã®é¢ç©ã‚’計算ã—ã¦è¡¨ç¤º
for (Shape shape : shapes) {
System.out.println("Area: " + shape.calculateArea());
}
}
}
ã“ã®ã‚³ãƒ¼ãƒ‰ã§ã¯ã€æŠ½è±¡ã‚¯ãƒ©ã‚¹ Shape を定義ã—ã€å…·è±¡ã‚¯ãƒ©ã‚¹ Circle 㨠Rectangle ãŒãれを拡張ã—ã¦ã„ã¾ã™ã€‚å„具象クラスã§ã¯ calculateArea メソッドをオーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã—ã€ãƒãƒªãƒ¢ãƒ¼ãƒ•ィズムを使用ã—ã¦Shape åž‹ã®ãƒªã‚¹ãƒˆã«ç•°ãªã‚‹å½¢çжã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’è¿½åŠ ã—ã¦ã„ã¾ã™ã€‚ãã—ã¦ã€ãƒªã‚¹ãƒˆå†…ã®å„形状ã®é¢ç©ã‚’計算ã—ã¦è¡¨ç¤ºã—ã¦ã„ã¾ã™ã€‚
å®Ÿè¡Œçµæžœï¼š
Area: 78.53981633974483
Area: 24.0
ã“れã¯ã€Shape åž‹ã®ãƒªã‚¹ãƒˆã«å«ã¾ã‚Œã‚‹å„è¦ç´ (Circle ãŠã‚ˆã³ Rectangle)㮠calculateArea ãƒ¡ã‚½ãƒƒãƒ‰ãŒæ£ã—ã呼ã³å‡ºã•れã€ãれãžã‚Œã®é¢ç©ãŒè¨ˆç®—ã•れã¦è¡¨ç¤ºã•れã¦ã„ã‚‹ã“ã¨ã‚’示ã—ã¦ã„ã¾ã™ã€‚
「016 抽象クラスã€å•題集リスト
🎯 実習ã§ç†è§£ã‚’æ·±ã‚よã†
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™


コメント