// 基本クラス: Animal
class Animal {
public void makeSound() {
// サウンドã®å®Ÿè£…ã¯ã‚µãƒ–クラスã§è¡Œã†
}
}
// サブクラス1: Dog
class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("Woof!"); // ワンワンã¨é³´ã
}
}
// サブクラス2: Cat
class Cat extends Animal {
@Override
public void makeSound() {
System.out.println("Meow!"); // ニャーニャーã¨é³´ã
}
}
// メインクラス
public class Main {
public static void main(String[] args) {
// å‹•çš„ãªé…列ã®ä½œæˆ
Animal[] animals = new Animal[3];
// é…列ã«è¦ç´ を追åŠ
animals[0] = new Dog();
animals[1] = new Cat();
animals[2] = new Dog();
// é…列ã®å„è¦ç´ ã‹ã‚‰ makeSound メソッドを呼ã³å‡ºã™
for (Animal animal : animals) {
animal.makeSound();
}
}
}
ã“ã®è§£ç”例ã§ã¯ã€ã€ŒAnimalã€ã¨ã„ã†åŸºæœ¬ã‚¯ãƒ©ã‚¹ã‚’作æˆã—ã€ã€ŒDogã€ã¨ã€ŒCatã€ã¨ã„ã†ã‚µãƒ–クラスã§ã€ŒmakeSoundã€ãƒ¡ã‚½ãƒƒãƒ‰ã‚’オーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã—ã¦ã„ã¾ã™ã€‚ãã—ã¦ã€ãƒ¡ã‚¤ãƒ³ã‚¯ãƒ©ã‚¹ã§å‹•çš„ãªé…列を作æˆã—ã€ç•°ãªã‚‹åž‹ã®å‹•ç‰©ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’æ ¼ç´ã—ã¦ã„ã¾ã™ã€‚最後ã«ã€é…列ã®å„è¦ç´ ã‹ã‚‰ãƒãƒªãƒ¢ãƒ¼ãƒ•ィズムを利用ã—ã¦ã€ŒmakeSoundã€ãƒ¡ã‚½ãƒƒãƒ‰ã‚’呼ã³å‡ºã—ã€å„動物ãŒç™ºã™ã‚‹ã‚µã‚¦ãƒ³ãƒ‰ã‚’表示ã—ã¦ã„ã¾ã™ã€‚
ãƒãƒªãƒ¢ãƒ¼ãƒ•ィズムã«ãŠã‘ã‚‹å‹•çš„ãªé…列
ãƒãƒªãƒ¢ãƒ¼ãƒ•ィズムを利用ã—ãŸå‹•çš„ãªé…列ã®ä½¿ç”¨ã«ã¯ã€ä»¥ä¸‹ã®ã‚ˆã†ãªåˆ©ç‚¹ãŒã‚りã¾ã™ã€‚
- æŸ”è»Ÿæ€§ã¨æ‹¡å¼µæ€§: å‹•çš„ãªé…列を使用ã™ã‚‹ã“ã¨ã§ã€åŸºæœ¬ã‚¯ãƒ©ã‚¹åž‹ã®é…列ã«ç•°ãªã‚‹ã‚µãƒ–クラスã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’æ ¼ç´ã§ãã¾ã™ã€‚ã“れã«ã‚ˆã‚Šã€ãƒ—ãƒã‚°ãƒ©ãƒ ãŒæŸ”è»Ÿã§æ‹¡å¼µå¯èƒ½ã«ãªã‚Šã¾ã™ã€‚æ–°ã—ã„サブクラスãŒè¿½åŠ ã•れã¦ã‚‚ã€æ—¢å˜ã®ã‚³ãƒ¼ãƒ‰ã‚’変更ã›ãšã«å–り込むã“ã¨ãŒã§ãã¾ã™ã€‚
- 統一的ãªã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェース: å‹•çš„ãªé…列を使用ã™ã‚‹ã“ã¨ã§ã€ç•°ãªã‚‹åž‹ã®ã‚ªãƒ–ジェクトをåŒã˜åž‹ã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã«ã¾ã¨ã‚ã€çµ±ä¸€çš„ãªã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェースをæä¾›ã§ãã¾ã™ã€‚ã“れã«ã‚ˆã‚Šã€å…±é€šã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚„æ“作を一貫ã—ã¦é©ç”¨ã§ãã€ã‚³ãƒ¼ãƒ‰ã®ç†è§£ãŒå®¹æ˜“ã«ãªã‚Šã¾ã™ã€‚
- ãƒãƒªãƒ¢ãƒ¼ãƒ•ã‚£ã‚ºãƒ ã®æ´»ç”¨: å‹•çš„ãªé…列ã¯ãƒãƒªãƒ¢ãƒ¼ãƒ•ィズムを活用ã™ã‚‹æ‰‹æ®µã®ä¸€ã¤ã§ã™ã€‚基本クラス型ã®å¤‰æ•°ã‚„é…列ã«ç•°ãªã‚‹åž‹ã®ã‚ªãƒ–ジェクトを代入ã™ã‚‹ã“ã¨ã§ã€å…±é€šã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェースをæä¾›ã—ã¤ã¤ã€å„ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆãŒæŒã¤å›ºæœ‰ã®æŒ¯ã‚‹èˆžã„を利用ã§ãã¾ã™ã€‚
- コードã®å†åˆ©ç”¨: å‹•çš„ãªé…列を使用ã™ã‚‹ã¨ã€åŒã˜åŸºæœ¬ã‚¯ãƒ©ã‚¹åž‹ã®ã‚³ãƒ¬ã‚¯ã‚·ãƒ§ãƒ³ã‚’扱ã†ã‚³ãƒ¼ãƒ‰ã‚’å†åˆ©ç”¨ã§ãã¾ã™ã€‚基本クラスã«å®šç¾©ã•れãŸãƒ¡ã‚½ãƒƒãƒ‰ãŒã€ã‚µãƒ–クラスã«ã‚ˆã£ã¦ã‚ªãƒ¼ãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã•れã¦ã„れã°ã€åŒã˜ãƒ¡ã‚½ãƒƒãƒ‰å‘¼ã³å‡ºã—ã§ç•°ãªã‚‹æŒ¯ã‚‹èˆžã„を実ç¾ã§ãã¾ã™ã€‚
- ä¿å®ˆæ€§ã®å‘上: ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ãŒæˆé•·ã™ã‚‹ã¨ã€æ–°ã—ã„æ©Ÿèƒ½ã‚„クラスãŒè¿½åŠ ã•れるã“ã¨ãŒã‚りã¾ã™ã€‚å‹•çš„ãªé…列を使用ã™ã‚‹ã“ã¨ã§ã€ã“れらã®å¤‰æ›´ã«å¯¾å¿œã—ã‚„ã™ããªã‚Šã¾ã™ã€‚æ—¢å˜ã®ã‚³ãƒ¼ãƒ‰ã‚’大幅ã«å¤‰æ›´ã›ãšã«æ–°ã—ã„クラスを導入ã§ãã¾ã™ã€‚
ç·ã˜ã¦ã€å‹•çš„ãªé…列ã¯ãƒ—ãƒã‚°ãƒ©ãƒ ã®æŸ”è»Ÿæ€§ã€æ‹¡å¼µæ€§ã€ä¿å®ˆæ€§ã‚’å‘上ã•ã›ã‚‹ãŸã‚ã«å½¹ç«‹ã¡ã¾ã™ã€‚ç•°ãªã‚‹åž‹ã®ã‚ªãƒ–ジェクトを共通ã®åŸºæœ¬åž‹ã§æ‰±ã†ã“ã¨ã§ã€ã‚ˆã‚ŠæŠ½è±¡çš„ã§ä¸€èˆ¬çš„ãªã‚³ãƒ¼ãƒ‰ã‚’記述ã§ãã¾ã™ã€‚
以下ã¯ã€ä¸€èˆ¬çš„ãªæ‰‹é †ã¨è€ƒãˆæ–¹ã§ã™ï¼š
基本クラスã®ä½œæˆ:
共通ã®ç‰¹æ€§ã‚„振る舞ã„ã‚’æŒã¤åŸºæœ¬ã‚¯ãƒ©ã‚¹ï¼ˆã¾ãŸã¯ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェース)を作æˆã—ã¾ã™ã€‚ã“ã®åŸºæœ¬ã‚¯ãƒ©ã‚¹ã¯ã€å…±é€šã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚„属性を定義ã—ã¾ã™ã€‚例ãˆã°ã€ã€ŒAnimalã€ã¨ã„ã†åŸºæœ¬ã‚¯ãƒ©ã‚¹ãŒã‚りã¾ã™ã€‚
class Animal {
// 共通ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚„属性
}
サブクラスã®ä½œæˆ:
基本クラスを継承ã—ãŸã‚µãƒ–クラスを作æˆã—ã¾ã™ã€‚サブクラスã§ã¯ã€åŸºæœ¬ã‚¯ãƒ©ã‚¹ã§å®šç¾©ã•れãŸãƒ¡ã‚½ãƒƒãƒ‰ã‚’オーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã—ã€ç‹¬è‡ªã®æŒ¯ã‚‹èˆžã„ã‚’è¿½åŠ ã—ã¾ã™ã€‚例ãˆã°ã€ã€ŒDogã€ã¨ã€ŒCatã€ã¨ã„ã†ã‚µãƒ–クラスãŒã‚りã¾ã™ã€‚
class Dog extends Animal {
// 独自ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚„属性
}
class Cat extends Animal {
// 独自ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚„属性
}
å‹•çš„ãªé…列ã®åˆ©ç”¨:
メインクラスãªã©ã§ã€åŸºæœ¬ã‚¯ãƒ©ã‚¹åž‹ã®å‹•çš„ãªé…列を作æˆã—ã€ãã®ä¸ã«ç•°ãªã‚‹ã‚µãƒ–クラスã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’æ ¼ç´ã—ã¾ã™ã€‚ã“れã«ã‚ˆã‚Šã€ç•°ãªã‚‹åž‹ã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’çµ±ä¸€çš„ã«æ‰±ã†ã“ã¨ãŒã§ãã¾ã™ã€‚
public class Main {
public static void main(String[] args) {
// å‹•çš„ãªé…列ã®ä½œæˆ
Animal[] animals = new Animal[3];
// é…列ã«è¦ç´ を追åŠ
animals[0] = new Dog();
animals[1] = new Cat();
animals[2] = new Dog();
// é…列ã®å„è¦ç´ ã‹ã‚‰ãƒ¡ã‚½ãƒƒãƒ‰ã‚’呼ã³å‡ºã™
for (Animal animal : animals) {
animal.someMethod(); // someMethodã¯Animalクラスã«å…±é€šã®ãƒ¡ã‚½ãƒƒãƒ‰
}
}
}
ãƒãƒªãƒ¢ãƒ¼ãƒ•ィズムを利用: å‹•çš„ãªé…åˆ—ã«æ ¼ç´ã•れãŸã‚ªãƒ–ジェクトã¯ã€åŸºæœ¬ã‚¯ãƒ©ã‚¹åž‹ã¨ã—ã¦çµ±ä¸€çš„ã«æ‰±ã‚れã¾ã™ã€‚ã“れã«ã‚ˆã‚Šã€ç•°ãªã‚‹ã‚µãƒ–クラスã®ã‚ªãƒ–ジェクトã«å…±é€šã®æ“作をé©ç”¨ã§ãã¾ã™ã€‚ãƒãƒªãƒ¢ãƒ¼ãƒ•ィズムを利用ã™ã‚‹ã“ã¨ã§ã€æŸ”軟性ãŒå‘上ã—ã€ã‚³ãƒ¼ãƒ‰ã®å†åˆ©ç”¨æ€§ãŒé«˜ã¾ã‚Šã¾ã™ã€‚
以上ãŒã€ã€Œãƒãƒªãƒ¢ãƒ¼ãƒ•ィズムã«ãŠã‘ã‚‹å‹•çš„ãªé…列ã€ã®åŸºæœ¬çš„ãªè€ƒãˆæ–¹ã¨æ‰‹é †ã§ã™ã€‚
「015 ãƒãƒªãƒ¢ãƒ¼ãƒ•ィズムã€å•題集リスト
🎯 実習ã§ç†è§£ã‚’æ·±ã‚よã†
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™


コメント