// 抽象クラス Animal
abstract class Animal {
public abstract void makeSound();
}
// 具象クラス Dog
class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("Woof! Woof!");
}
}
// 具象クラス Cat
class Cat extends Animal {
@Override
public void makeSound() {
System.out.println("Meow! Meow!");
}
}
// メインクラス
public class Main {
public static void main(String[] args) {
// Animal åž‹ã®é…列を作æˆ
Animal[] animals = new Animal[2];
// Dog インスタンスをé…åˆ—ã«æ ¼ç´
animals[0] = new Dog();
// Cat インスタンスをé…åˆ—ã«æ ¼ç´
animals[1] = new Cat();
// ãƒãƒªãƒ¢ãƒ¼ãƒ•ィズムを使用ã—ã¦ç•°ãªã‚‹ç¨®é¡žã®å‹•物ã®ã‚µã‚¦ãƒ³ãƒ‰ã‚’出力
for (Animal animal : animals) {
animal.makeSound();
}
}
}
ã“ã®ãƒ—ãƒã‚°ãƒ©ãƒ ã§ã¯ã€Animal 抽象クラスを定義ã—ã€ãã®ä¸ã« makeSound 抽象メソッドãŒã‚りã¾ã™ã€‚Dog 㨠Cat クラスã¯ãれãžã‚Œ Animal ã‚’æ‹¡å¼µã—ã¦ã€makeSound メソッドをオーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã—ã¦ã„ã¾ã™ã€‚Main クラスã§ã¯ã€Animal åž‹ã®é…列を作æˆã—ã€ç•°ãªã‚‹ç¨®é¡žã®å‹•物ã®ã‚µã‚¦ãƒ³ãƒ‰ã‚’ãƒãƒªãƒ¢ãƒ¼ãƒ•ィズムを使ã£ã¦è¡¨ç¤ºã—ã¦ã„ã¾ã™ã€‚
å‡ºåŠ›çµæžœï¼š
Woof! Woof!
Meow! Meow!
ã“ã®ãƒ—ãƒã‚°ãƒ©ãƒ ã§ã¯ã€Animal åž‹ã®é…列 animals を作æˆã—ã€ãã®ä¸ã« Dog インスタンス㨠Cat ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’æ ¼ç´ã—ã¦ã„ã¾ã™ã€‚ãã®å¾Œã€æ‹¡å¼µforループを使用ã—ã¦é…列内ã®å„è¦ç´ ã«å¯¾ã—㦠makeSound メソッドを呼ã³å‡ºã—ã¦ã„ã¾ã™ã€‚
é…列ã®1番目ã®è¦ç´ 㯠Dog インスタンスã§ã‚りã€makeSound メソッドãŒå‘¼ã³å‡ºã•れる㨠"Woof! Woof!" ãŒå‡ºåŠ›ã•れã¾ã™ã€‚é…列ã®2番目ã®è¦ç´ 㯠Cat インスタンスã§ã‚りã€åŒæ§˜ã« makeSound メソッドãŒå‘¼ã³å‡ºã•れる㨠"Meow! Meow!" ãŒå‡ºåŠ›ã•れã¾ã™ã€‚
ã“れãŒãƒãƒªãƒ¢ãƒ¼ãƒ•ィズムã®ä¸€ä¾‹ã§ã™ã€‚
「016 抽象クラスã€å•題集リスト
🎯 実習ã§ç†è§£ã‚’æ·±ã‚よã†
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™


コメント