// Animalクラスã®å®šç¾©
class Animal {
// makeSoundメソッド
void makeSound() {
System.out.println("音を鳴らã—ã¾ã™");
}
}
// Dogクラスã®å®šç¾© (Animalクラスを継承)
class Dog extends Animal {
// makeSoundメソッドをオーãƒãƒ¼ãƒ©ã‚¤ãƒ‰
@Override
void makeSound() {
System.out.println("ワンワン");
}
}
// Catクラスã®å®šç¾© (Animalクラスを継承)
class Cat extends Animal {
// makeSoundメソッドをオーãƒãƒ¼ãƒ©ã‚¤ãƒ‰
@Override
void makeSound() {
System.out.println("ニャー");
}
}
// メインクラス
public class Main {
public static void main(String[] args) {
// Animalクラスã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’作æˆ
Animal genericAnimal = new Animal();
// Animalクラスã®makeSoundメソッドを呼ã³å‡ºã—
genericAnimal.makeSound();
// Dogクラスã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’作æˆ
Dog myDog = new Dog();
// Dogクラスã§ã‚ªãƒ¼ãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã•れãŸmakeSoundメソッドを呼ã³å‡ºã—
myDog.makeSound();
// Catクラスã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’作æˆ
Cat myCat = new Cat();
// Catクラスã§ã‚ªãƒ¼ãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã•れãŸmakeSoundメソッドを呼ã³å‡ºã—
myCat.makeSound();
}
}
ã“ã®ä¾‹ã§ã¯ã€Animal クラスã«ã¯åŸºæœ¬ã® makeSound メソッドãŒã‚りã€Dog クラス㨠Cat クラスã¯ãれãžã‚Œ makeSound メソッドをオーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã—ã¦ã„ã¾ã™ã€‚ãれãžã‚Œã®ã‚¯ãƒ©ã‚¹ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’作æˆã—ã€makeSound メソッドを呼ã³å‡ºã™ã¨ã€é©åˆ‡ãªéŸ³ãŒè¡¨ç¤ºã•れã¾ã™ã€‚
オーãƒãƒ¼ãƒ©ã‚¤ãƒ‰
オーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ï¼ˆOverride)ã¯ã€Javaã«ãŠã„ã¦ã‚µãƒ–クラスã§ã‚¹ãƒ¼ãƒ‘ークラスã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’å†å®šç¾©ã™ã‚‹æ©Ÿèƒ½ã§ã™ã€‚オーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã«ã‚ˆã£ã¦ã€ã‚µãƒ–クラスã¯ã‚¹ãƒ¼ãƒ‘ークラスã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’カスタマイズã—ã€ç‰¹å®šã®å‹•作をæä¾›ã§ãã¾ã™ã€‚オーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã¯ä¸»ã«ç¶™æ‰¿é–¢ä¿‚ã«ã‚るクラスã§åˆ©ç”¨ã•れã¾ã™ã€‚
以下ã¯ã‚ªãƒ¼ãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã®åŸºæœ¬çš„ãªãƒ«ãƒ¼ãƒ«ã§ã™ã€‚
- オーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã™ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰ã¯ã€ã‚¹ãƒ¼ãƒ‘ークラスã¨ã‚µãƒ–クラスã§åŒã˜ãƒ¡ã‚½ãƒƒãƒ‰ã‚·ã‚°ãƒãƒãƒ£ï¼ˆãƒ¡ã‚½ãƒƒãƒ‰åã€å¼•æ•°ã®åž‹ãƒ»å€‹æ•°ã€æˆ»ã‚Šå€¤ã®åž‹ï¼‰ã‚’æŒã£ã¦ã„ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚
- オーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã™ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰ã¯ã€
@Overrideアノテーションを使用ã—ã¦æ˜Žç¤ºçš„ã«æŒ‡å®šã§ãã¾ã™ã€‚ã“れã¯ã‚ªãƒ—ションã§ã™ãŒã€æŽ¨å¥¨ã•れã¾ã™ã€‚
オーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã•れãŸãƒ¡ã‚½ãƒƒãƒ‰ã¯ã€ã‚µãƒ–クラスã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã§å‘¼ã³å‡ºã•れるã¨ã€ã‚µãƒ–クラスã®å®šç¾©ã«å¾“ã£ã¦å‡¦ç†ãŒè¡Œã‚れã¾ã™ã€‚
オーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã«ã¯ã„ãã¤ã‹ã®ãƒ¡ãƒªãƒƒãƒˆãŒã‚りã¾ã™ã€‚以下ã«ãã®ã„ãã¤ã‹ã‚’挙ã’ã¦ã¿ã¾ã™ã€‚
- カスタマイズå¯èƒ½æ€§: ã‚¹ãƒ¼ãƒ‘ãƒ¼ã‚¯ãƒ©ã‚¹ã§æä¾›ã•れる標準ã®å‹•作をサブクラスã§å¤‰æ›´ã§ãã¾ã™ã€‚サブクラスã¯ã‚¹ãƒ¼ãƒ‘ークラスã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’å†å®šç¾©ã—ã€è‡ªèº«ã®ç‰¹æœ‰ã®å‹•ä½œã‚’è¿½åŠ ã¾ãŸã¯å¤‰æ›´ã§ãã¾ã™ã€‚
- ãƒãƒªãƒ¢ãƒ¼ãƒ•ィズム: オーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã¯ãƒãƒªãƒ¢ãƒ¼ãƒ•ィズムをサãƒãƒ¼ãƒˆã—ã¾ã™ã€‚ã“れã¯ã€åŒã˜ãƒ¡ã‚½ãƒƒãƒ‰åを使用ã—ã¦ç•°ãªã‚‹ã‚¯ãƒ©ã‚¹ã®ã‚ªãƒ–ジェクトã§åŒã˜ãƒ¡ã‚½ãƒƒãƒ‰ã‚’呼ã³å‡ºã›ã‚‹ã¨ã„ã†æ¦‚念ã§ã™ã€‚ã“れã«ã‚ˆã‚Šã€å…±é€šã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェースをæä¾›ã—ã¤ã¤ã€å„サブクラスã§ç•°ãªã‚‹å‹•作を実ç¾ã§ãã¾ã™ã€‚
- メンテナンス性: オーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã‚’使用ã™ã‚‹ã¨ã€ã‚³ãƒ¼ãƒ‰ã®ãƒ¡ãƒ³ãƒ†ãƒŠãƒ³ã‚¹ãŒå®¹æ˜“ã«ãªã‚Šã¾ã™ã€‚スーパークラスã®å®Ÿè£…ãŒå¤‰æ›´ã•れã¦ã‚‚ã€ãれã«ä¾å˜ã™ã‚‹ã‚µãƒ–クラスã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯è‡ªå‹•çš„ã«æ–°ã—ã„実装ã«é©å¿œã•れã¾ã™ã€‚
- 効果的ãªåˆ©ç”¨: ã‚¹ãƒ¼ãƒ‘ãƒ¼ã‚¯ãƒ©ã‚¹ã§æ±Žç”¨çš„ãªå®Ÿè£…ã‚’æä¾›ã—ã€ã‚µãƒ–クラスã§ãã®å®Ÿè£…を特殊化ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ã“れã«ã‚ˆã‚Šã€ã‚³ãƒ¼ãƒ‰ã®å†åˆ©ç”¨ãŒä¿ƒé€²ã•れã¾ã™ã€‚
- コードã®ç†è§£å®¹æ˜“性: オーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã‚’使用ã™ã‚‹ã¨ã€ã‚³ãƒ¼ãƒ‰ãŒæ´—ç·´ã•れã€ç†è§£ã—ã‚„ã™ããªã‚Šã¾ã™ã€‚メソッドã®åå‰ã‚„ã‚·ã‚°ãƒãƒãƒ£ãŒä¸€è²«ã—ã¦ã„ã‚‹ãŸã‚ã€ã‚³ãƒ¼ãƒ‰ãŒã©ã®ã‚ˆã†ã«æ©Ÿèƒ½ã™ã‚‹ã‹ã‚’å®¹æ˜“ã«æŠŠæ¡ã§ãã¾ã™ã€‚
ãŸã ã—ã€ã‚ªãƒ¼ãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã‚’濫用ã™ã‚‹ã¨ã‚³ãƒ¼ãƒ‰ãŒè¤‡é›‘ã«ãªã‚Šã€ç†è§£ã—ã«ãããªã‚‹å¯èƒ½æ€§ãŒã‚ã‚‹ãŸã‚ã€é©åˆ‡ã«åˆ©ç”¨ã™ã‚‹ã“ã¨ãŒé‡è¦ã§ã™ã€‚
オーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã¨ã‚ªãƒ¼ãƒãƒ¼ãƒãƒ¼ãƒ‰ã‚’æ··åŒã—ãªã„よã†ã«
注æ„: オーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã¨ã‚ªãƒ¼ãƒãƒ¼ãƒãƒ¼ãƒ‰ã®é•ã„ã«æ³¨æ„ã—ã¦ãã ã•ã„。
オーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ (Override):
- サブクラスãŒã‚¹ãƒ¼ãƒ‘ークラスã®åŒã˜ãƒ¡ã‚½ãƒƒãƒ‰åã€å¼•数リストã€ãŠã‚ˆã³æˆ»ã‚Šå€¤åž‹ã‚’æŒã¤ãƒ¡ã‚½ãƒƒãƒ‰ã‚’å†å®šç¾©ã™ã‚‹ã“ã¨ã§ã™ã€‚
- ãƒãƒªãƒ¢ãƒ¼ãƒ•ィズムを実ç¾ã—ã€ã‚µãƒ–クラスã§ã‚¹ãƒ¼ãƒ‘ークラスã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’カスタマイズã§ãã¾ã™ã€‚
class SuperClass {
void exampleMethod() {
// スーパークラスã®å®Ÿè£…
}
}
class SubClass extends SuperClass {
@Override
void exampleMethod() {
// サブクラス独自ã®å®Ÿè£…
}
}
オーãƒãƒ¼ãƒãƒ¼ãƒ‰ (Overload):
- åŒä¸€ã‚¯ãƒ©ã‚¹å†…ã§ã€åŒã˜ãƒ¡ã‚½ãƒƒãƒ‰åã§ã‚ã£ã¦ã‚‚引数リストãŒç•°ãªã‚‹ãƒ¡ã‚½ãƒƒãƒ‰ã‚’複数定義ã™ã‚‹ã“ã¨ã§ã™ã€‚
- 引数ã®åž‹ã‚„個数ãŒç•°ãªã‚‹å ´åˆã«ã€åŒã˜ãƒ¡ã‚½ãƒƒãƒ‰åを使用ã—ã¦è¤‡æ•°ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’作æˆã§ãã¾ã™ã€‚
class Example {
void overloadedMethod(int x) {
// å¼•æ•°ãŒæ•´æ•°ã®å ´åˆã®å®Ÿè£…
}
void overloadedMethod(String str) {
// å¼•æ•°ãŒæ–‡å—列ã®å ´åˆã®å®Ÿè£…
}
}
è¦ç‚¹:
- オーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã¯ç•°ãªã‚‹ã‚¯ãƒ©ã‚¹é–“ã§è¡Œã‚れã€ãƒ©ãƒ³ã‚¿ã‚¤ãƒ 時ã«å‹•çš„ã«è§£æ±ºã•れã¾ã™ã€‚
- オーãƒãƒ¼ãƒãƒ¼ãƒ‰ã¯åŒã˜ã‚¯ãƒ©ã‚¹å†…ã§è¡Œã‚れã€ã‚³ãƒ³ãƒ‘イル時ã«é™çš„ã«è§£æ±ºã•れã¾ã™ã€‚
é©åˆ‡ã«ä½¿ç”¨ã™ã‚‹ã“ã¨ã§ã€ã‚¯ãƒªãƒ¼ãƒ³ã§ä¿å®ˆã—ã‚„ã™ã„コードを実ç¾ã§ãã¾ã™ã€‚æ··åŒã›ãšã€ç”¨é€”ã«åˆã‚ã›ã¦ä½¿ã„分ã‘ã¾ã—ょã†ã€‚
「014 継承ã€å•題集リスト
🎯 実習ã§ç†è§£ã‚’æ·±ã‚よã†
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™


コメント