// 抽象クラス 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 width;
private double height;
// コンストラクタ
public Rectangle(double width, double height) {
this.width = width;
this.height = height;
}
// calculateArea メソッドã®ã‚ªãƒ¼ãƒãƒ¼ãƒ©ã‚¤ãƒ‰
@Override
public double calculateArea() {
return width * height;
}
}
// Main クラス
public class Main {
public static void main(String[] args) {
// ç•°ãªã‚‹å½¢çжã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’作æˆ
Circle circle = new Circle(5.0);
Rectangle rectangle = new Rectangle(4.0, 6.0);
// å„形状ã®é¢ç©ã‚’計算ã—ã¦è¡¨ç¤º
System.out.println("Circle Area: " + circle.calculateArea());
System.out.println("Rectangle Area: " + rectangle.calculateArea());
}
}
ã“ã®ãƒ—ãƒã‚°ãƒ©ãƒ ã§ã¯ã€Shape クラスを抽象クラスã¨ã—ã¦å®šç¾©ã—ã€Circle クラス㨠Rectangle クラスãŒãれを継承ã—㦠calculateArea メソッドをオーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã—ã¦ã„ã¾ã™ã€‚Main クラスã§ã¯ã€ç•°ãªã‚‹å½¢çжã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’作æˆã—ã€ãれãžã‚Œã®é¢ç©ã‚’計算ã—ã¦è¡¨ç¤ºã—ã¦ã„ã¾ã™ã€‚
ãƒãƒªãƒ¢ãƒ¼ãƒ•ィズムã®å¿œç”¨
- メソッドã®ã‚ªãƒ¼ãƒãƒ¼ãƒ©ã‚¤ãƒ‰:
- ãƒãƒªãƒ¢ãƒ¼ãƒ•ィズムã§ã¯ã€è¦ªã‚¯ãƒ©ã‚¹ã§å®£è¨€ã•れãŸãƒ¡ã‚½ãƒƒãƒ‰ã‚’サブクラスã§åŒã˜ãƒ¡ã‚½ãƒƒãƒ‰åã§å†å®šç¾©ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ã“れをメソッドã®ã‚ªãƒ¼ãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã¨å‘¼ã³ã¾ã™ã€‚
- インターフェースを実装ã™ã‚‹ã‚¯ãƒ©ã‚¹ã‚„ã€æŠ½è±¡ã‚¯ãƒ©ã‚¹ã‚’ç¶™æ‰¿ã™ã‚‹ã‚µãƒ–クラスã§ã¯ã€å…±é€šã®ãƒ¡ã‚½ãƒƒãƒ‰åを使用ã™ã‚‹ã“ã¨ã§ã€åŒã˜ãƒ¡ã‚½ãƒƒãƒ‰å‘¼ã³å‡ºã—ã§ç•°ãªã‚‹å®Ÿè£…を実ç¾ã—ã¾ã™ã€‚
- 多態性:
- ãƒãƒªãƒ¢ãƒ¼ãƒ•ィズムã«ã‚ˆã‚Šã€åŒã˜åž‹ã‚’æŒã¤è¤‡æ•°ã®ã‚ªãƒ–ジェクトãŒç•°ãªã‚‹æŒ¯ã‚‹èˆžã„ã‚’ã™ã‚‹ã“ã¨ãŒã‚りã¾ã™ã€‚ã“れã¯å¤šæ…‹æ€§ã¨å‘¼ã°ã‚Œã€ãƒ—ãƒã‚°ãƒ©ãƒ ã®æŸ”軟性を高ã‚ã¾ã™ã€‚
- 例ãˆã°ã€åŒã˜ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェースを実装ã—ãŸè¤‡æ•°ã®ã‚¯ãƒ©ã‚¹ãŒã‚ã‚‹å ´åˆã€ãれãžã‚Œã®ã‚ªãƒ–ジェクトをåŒã˜åž‹ã¨ã—ã¦æ‰±ã„ãªãŒã‚‰ã€å®Ÿéš›ã«ã¯å„オブジェクトã«å¿œã˜ãŸå‹•作ãŒå¯èƒ½ã§ã™ã€‚
- ジェãƒãƒªãƒƒã‚¯ãƒ—ãƒã‚°ãƒ©ãƒŸãƒ³ã‚°:
- ãƒãƒªãƒ¢ãƒ¼ãƒ•ィズムã¯ã‚¸ã‚§ãƒãƒªãƒƒã‚¯ãƒ—ãƒã‚°ãƒ©ãƒŸãƒ³ã‚°ã«ã‚‚関連ã—ã¦ã„ã¾ã™ã€‚ジェãƒãƒªãƒƒã‚¯åž‹ã‚’使用ã™ã‚‹ã“ã¨ã§ã€ç‰¹å®šã®åž‹ã«ä¾å˜ã›ãšã«ã€æ±Žç”¨çš„ãªã‚¯ãƒ©ã‚¹ã‚„メソッドを実装ã§ãã¾ã™ã€‚
- ジェãƒãƒªãƒƒã‚¯åž‹ã‚’使用ã™ã‚‹ã“ã¨ã§ã€æ§˜ã€…ãªåž‹ã«å¯¾ã—ã¦åŒã˜æ“作を行ã†ã“ã¨ãŒã§ãã€ã‚³ãƒ¼ãƒ‰ã®å†åˆ©ç”¨æ€§ãŒå‘上ã—ã¾ã™ã€‚
- å‹•çš„ãªãƒ¡ã‚½ãƒƒãƒ‰ã®å‘¼ã³å‡ºã—:
- ãƒãƒªãƒ¢ãƒ¼ãƒ•ィズムã«ã‚ˆã‚Šã€å®Ÿè¡Œæ™‚ã«ã‚ªãƒ–ジェクトã®å®Ÿéš›ã®åž‹ã«åŸºã¥ã„ã¦å‹•çš„ã«ãƒ¡ã‚½ãƒƒãƒ‰ã‚’呼ã³å‡ºã™ã“ã¨ãŒã§ãã¾ã™ã€‚ã“れを動的ディスパッãƒã¨å‘¼ã³ã¾ã™ã€‚
- インターフェースや抽象クラスを使用ã™ã‚‹ã“ã¨ã§ã€ãƒ—ãƒã‚°ãƒ©ãƒ ãŒæŸ”軟ã«å¤‰æ›´ã•ã‚Œã‚‹å ´åˆã«ã‚‚ã€ã‚³ãƒ¼ãƒ‰ã®å¤‰æ›´ãŒæœ€å°é™ã«æŠ‘ãˆã‚‰ã‚Œã¾ã™ã€‚
- ãƒãƒªãƒ¢ãƒ¼ãƒ•ィックãªã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³:
- ãƒãƒªãƒ¢ãƒ¼ãƒ•ィズムã¯ã€ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³å†…ã«ç•°ãªã‚‹åž‹ã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’æ ¼ç´ã™ã‚‹éš›ã«ã‚‚利用ã•れã¾ã™ã€‚共通ã®è¦ªã‚¯ãƒ©ã‚¹ã‚„インターフェースを指定ã™ã‚‹ã“ã¨ã§ã€ç•°ãªã‚‹åž‹ã‚’åŒã˜ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã«ã¾ã¨ã‚ã¦ç®¡ç†ã§ãã¾ã™ã€‚
ãƒãƒªãƒ¢ãƒ¼ãƒ•ィズムをé©åˆ‡ã«ä½¿ç”¨ã™ã‚‹ã“ã¨ã§ã€ã‚³ãƒ¼ãƒ‰ã®æŸ”軟性やå†åˆ©ç”¨æ€§ãŒå‘上ã—ã€ä¿å®ˆæ€§ã®é«˜ã„プãƒã‚°ãƒ©ãƒ を実ç¾ã§ãã¾ã™ã€‚ãŸã ã—ã€ãƒãƒªãƒ¢ãƒ¼ãƒ•ィズムを効果的ã«åˆ©ç”¨ã™ã‚‹ãŸã‚ã«ã¯ã€ã‚ªãƒ–ジェクト指å‘ã®åŸºæœ¬æ¦‚念ã«å¯¾ã™ã‚‹ç†è§£ãŒæ¬ ã‹ã›ã¾ã›ã‚“。
「018 オブジェクト指å‘ã®æ·±åŒ–ã€å•題集リスト
🎯 実習ã§ç†è§£ã‚’æ·±ã‚よã†
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™


コメント