// 抽象クラス Animal ã®å®šç¾©
abstract class Animal {
// 抽象メソッド makeSound() ã®å®£è¨€
public abstract void makeSound();
}
// 具象クラス Dog ã®å®šç¾©
class Dog extends Animal {
// makeSound() メソッドã®å®Ÿè£…
@Override
public void makeSound() {
System.out.println("ワンワン");
}
}
// 具象クラス Cat ã®å®šç¾©
class Cat extends Animal {
// makeSound() メソッドã®å®Ÿè£…
@Override
public void makeSound() {
System.out.println("ニャー");
}
}
// メインクラス
public class Main {
public static void main(String[] args) {
// Dog クラスã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’作æˆã—㦠makeSound() メソッドを呼ã³å‡ºã™
Dog myDog = new Dog();
myDog.makeSound();
// Cat クラスã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’作æˆã—㦠makeSound() メソッドを呼ã³å‡ºã™
Cat myCat = new Cat();
myCat.makeSound();
}
}
ã“ã®ã‚³ãƒ¼ãƒ‰ã§ã¯ã€Animal ã‚¯ãƒ©ã‚¹ãŒæŠ½è±¡ã‚¯ãƒ©ã‚¹ã¨ã—ã¦ã€makeSound() ãƒ¡ã‚½ãƒƒãƒ‰ãŒæŠ½è±¡ãƒ¡ã‚½ãƒƒãƒ‰ã¨ã—ã¦å®£è¨€ã•れã¦ã„ã¾ã™ã€‚ãã—ã¦ã€Dog クラス㨠Cat クラスãŒãれãžã‚Œ Animal クラスを継承ã—ã€makeSound() メソッドをオーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã—ã¦ã„ã¾ã™ã€‚main メソッドã§ã¯ã€ãれãžã‚Œã®ã‚¯ãƒ©ã‚¹ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’作æˆã—㦠makeSound() メソッドを呼ã³å‡ºã—ã€å ãˆå£°ã‚„é³´ã声ãŒè¡¨ç¤ºã•れるã“ã¨ã‚’確èªã—ã¦ã„ã¾ã™ã€‚
抽象クラス
抽象クラスã¯ã€Javaã®ã‚ªãƒ–ジェクト指å‘プãƒã‚°ãƒ©ãƒŸãƒ³ã‚°ã«ãŠã„ã¦ã€ã¾ãŸã€ã‚¯ãƒ©ã‚¹ã®è¨è¨ˆã«ãŠã„ã¦å…±é€šã®æ©Ÿèƒ½ã‚’æä¾›ã™ã‚‹ãŸã‚ã®æ¦‚念ã§ã™ã€‚以下ã«ã€æŠ½è±¡ã‚¯ãƒ©ã‚¹ã®åŸºæœ¬æ¦‚念を解説ã—ã¾ã™ã€‚
抽象クラスã®å®šç¾©:
抽象クラスã¯ã€abstract ã‚ーワードを使用ã—ã¦å®šç¾©ã•れã¾ã™ã€‚抽象クラスã«ã¯æŠ½è±¡ãƒ¡ã‚½ãƒƒãƒ‰ï¼ˆå®Ÿè£…ãŒãªã„メソッド)ãŒå«ã¾ã‚Œã‚‹ã“ã¨ãŒã‚りã¾ã™ã€‚
抽象クラスã¯ç›´æŽ¥ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’生æˆã™ã‚‹ã“ã¨ã¯ã§ããšã€å…·è±¡ã‚¯ãƒ©ã‚¹ï¼ˆå®Ÿéš›ã«ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’生æˆã§ãるクラス)を通ã˜ã¦åˆ©ç”¨ã•れã¾ã™ã€‚
abstract class Animal {
// 抽象メソッド
public abstract void makeSound();
}
抽象メソッド:
抽象クラスã«ã¯æŠ½è±¡ãƒ¡ã‚½ãƒƒãƒ‰ãŒå«ã¾ã‚Œã‚‹ã“ã¨ãŒã‚りã¾ã™ã€‚抽象メソッドã¯ãƒ¡ã‚½ãƒƒãƒ‰ã®å®£è¨€ã ã‘ãŒã‚りã€å®Ÿéš›ã®å®Ÿè£…ã¯ã‚µãƒ–クラスã«å§”ãられã¾ã™ã€‚
抽象メソッド㯠abstract ã‚ーワードをå«ã¿ã€æœ«å°¾ã«ã‚»ãƒŸã‚³ãƒãƒ³ãŒã¤ãã¾ã™ã€‚
abstract class Animal {
// 抽象メソッド
public abstract void makeSound();
}
サブクラスã®ç¶™æ‰¿ã¨å®Ÿè£…:
抽象クラスを継承ã™ã‚‹ã‚µãƒ–クラスã¯ã€æŠ½è±¡ãƒ¡ã‚½ãƒƒãƒ‰ã‚’オーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ï¼ˆå®Ÿè£…)ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ã“れãŒå¼·åˆ¶ã•れã€ã‚µãƒ–クラスãŒå…±é€šã®æ©Ÿèƒ½ã‚’æä¾›ã§ãるよã†ã«ãªã‚Šã¾ã™ã€‚
class Dog extends Animal {
// 抽象メソッドã®å®Ÿè£…
@Override
public void makeSound() {
System.out.println("ワンワン");
}
}
抽象クラスã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹åŒ–ã®åˆ¶ç´„:
抽象クラスã¯ç›´æŽ¥ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’生æˆã§ãã¾ã›ã‚“。具象クラスを通ã˜ã¦ã€ã‚µãƒ–クラスã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’生æˆã—ã¦ä½¿ç”¨ã—ã¾ã™ã€‚
Animal myAnimal = new Dog(); // ã“ã‚Œã¯æœ‰åй
Animal invalidAnimal = new Animal(); // ã“れã¯ã‚¨ãƒ©ãƒ¼
多é‡ç¶™æ‰¿ã®åˆ¶ç´„:
Javaã§ã¯å˜ä¸€ç¶™æ‰¿ã—ã‹è¨±ã•れã¦ã„ã¾ã›ã‚“。抽象クラスを介ã—ãŸç¶™æ‰¿ã¯ã€ä»–ã®ã‚¯ãƒ©ã‚¹ã¨ã®å¤šé‡ç¶™æ‰¿ã®ä»£æ›¿æ‰‹æ®µã¨ã—ã¦ä½¿ç”¨ã•れã¾ã™ã€‚
abstract class Animal { /* ... */ }
class Dog extends Animal { /* ... */ }
// class Cat extends Animal, SomeOtherClass; // ã“れã¯ã‚¨ãƒ©ãƒ¼ï¼ˆå¤šé‡ç¶™æ‰¿ãŒä¸å¯ï¼‰
抽象クラスã¯ã€ã‚¯ãƒ©ã‚¹é–“ã§å…±é€šã®æ©Ÿèƒ½ã‚„振る舞ã„を抽象化ã—ã€ã‚µãƒ–クラスã«å…±é€šã®åŸºç›¤ã‚’æä¾›ã™ã‚‹éš›ã«æœ‰ç”¨ã§ã™ã€‚ã“れã«ã‚ˆã‚Šã‚³ãƒ¼ãƒ‰ã®å†åˆ©ç”¨æ€§ãŒå‘上ã—ã€ãƒ¡ãƒ³ãƒ†ãƒŠãƒ³ã‚¹ã‚„æ‹¡å¼µãŒã—ã‚„ã™ããªã‚Šã¾ã™ã€‚
「016 抽象クラスã€å•題集リスト
🎯 実習ã§ç†è§£ã‚’æ·±ã‚よã†
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™


コメント