// Runnable インターフェイスã®å®£è¨€
interface Runnable {
void run();
}
// Animal クラスã®å®£è¨€ã¨ Runnable インターフェイスã®å®Ÿè£…
public class Animal implements Runnable {
// makeSound メソッドã®å®£è¨€
void makeSound() {
// é©åˆ‡ãªå®Ÿè£…
}
// run メソッドã®å®Ÿè£… (Runnable インターフェイスã®å®Ÿè£…)
@Override
public void run() {
// é©åˆ‡ãªå®Ÿè£…
}
}
// Dog クラスã®å®£è¨€ã¨ Animal クラスã®ç¶™æ‰¿
public class Dog extends Animal {
// makeSound メソッドã®ã‚ªãƒ¼ãƒãƒ¼ãƒ©ã‚¤ãƒ‰
@Override
void makeSound() {
System.out.println("Woof!");
}
// run メソッドã®å®Ÿè£… (Runnable インターフェイスã®å®Ÿè£…)
@Override
public void run() {
System.out.println("Running like a dog.");
}
}
ã“ã®ä¾‹ã§ã¯ã€Animal クラス㌠Runnable インターフェイスを実装ã—ã€Dog クラス㌠Animal クラスを継承ã—ã¦ã„ã¾ã™ã€‚ã¾ãŸã€Dog クラス㯠makeSound メソッドをオーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã—ã€ã€ŒWoof!ã€ã¨è¡¨ç¤ºã—ã¾ã™ã€‚run メソッドも Runnable インターフェイスã®å®Ÿè£…ã«å¾“ã„ã€ã€ŒRunning like a dog.ã€ã¨è¡¨ç¤ºã—ã¾ã™ã€‚
インターフェイスã®å®Ÿè£…ã¨ã‚¯ãƒ©ã‚¹ã®ç¶™æ‰¿ã®åŒæ™‚利用
柔軟ãªã‚¯ãƒ©ã‚¹è¨è¨ˆ:
- インターフェイスã®å®Ÿè£…ã¨ã‚¯ãƒ©ã‚¹ã®ç¶™æ‰¿ã‚’åŒæ™‚ã«åˆ©ç”¨ã™ã‚‹ã“ã¨ã§ã€ã‚¯ãƒ©ã‚¹ã¯ç•°ãªã‚‹å´é¢ã‚„振る舞ã„ã‚’æŒã¤ã“ã¨ãŒã§ãã¾ã™ã€‚
- 例ãˆã°ã€å‹•物(
Animal)クラスãŒé³´ãã“ã¨ã¨åŒæ™‚ã«èµ°ã‚‹ã“ã¨ãŒã§ãるよã†ã«ã—ãŸã„å ´åˆã€ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェイスã®å®Ÿè£…ã¨ã‚¯ãƒ©ã‚¹ã®ç¶™æ‰¿ã‚’組ã¿åˆã‚ã›ã‚‹ã“ã¨ãŒæœ‰ç›Šã§ã™ã€‚
2. 具象クラスã¨ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェイス:
- 具象クラスã¯ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェイスを実装ã—ã€åŒæ™‚ã«ä»–ã®ã‚¯ãƒ©ã‚¹ã‚’継承ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
- 具象クラスã¯ã€ç¶™æ‰¿ã«ã‚ˆã£ã¦æ—¢å˜ã®ã‚¯ãƒ©ã‚¹ã®æ©Ÿèƒ½ã‚’å–り入れã¤ã¤ã€ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェイスã®å®Ÿè£…ã«ã‚ˆã£ã¦æ–°ã—ã„æŒ¯ã‚‹èˆžã„や契約をæŒã¤ã“ã¨ãŒã§ãã¾ã™ã€‚
3. 例:
interface Runnable {
void run();
}
class Animal {
void makeSound() {
System.out.println("Generic animal sound");
}
}
class Dog extends Animal implements Runnable {
@Override
void makeSound() {
System.out.println("Woof!");
}
@Override
public void run() {
System.out.println("Running like a dog.");
}
}
Animalクラスã¯makeSoundメソッドをæŒã¤ãŒã€Dogクラスã¯ã“れをオーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã—ã¦ç‹¬è‡ªã®ã€ŒWoof!ã€ã¨ã„ã†é³´ã声ã«å¤‰æ›´ã—ã¦ã„ã¾ã™ã€‚- åŒæ™‚ã«
Dogクラスã¯Runnableインターフェイスを実装ã—ã€runãƒ¡ã‚½ãƒƒãƒ‰ã‚’è¿½åŠ ã—ã¦ã„ã¾ã™ã€‚ã“れã«ã‚ˆã‚Šã€Dogクラスã¯Animalクラスã®ç‰¹æ€§ã‚’æŒã¡ã¤ã¤ã€Runnableインターフェイスã®è¦ä»¶ã‚’満ãŸã™ã“ã¨ãŒã§ãã¾ã™ã€‚
4. メリット:
- インターフェイスã®å®Ÿè£…ã¨ã‚¯ãƒ©ã‚¹ã®ç¶™æ‰¿ã‚’åŒæ™‚ã«ä½¿ç”¨ã™ã‚‹ã“ã¨ã§ã€ç•°ãªã‚‹ã‚¯ãƒ©ã‚¹é–“ã§ã®ã‚³ãƒ¼ãƒ‰ã®å…±æœ‰ã¨å†åˆ©ç”¨ãŒå®¹æ˜“ã«ãªã‚Šã¾ã™ã€‚
- クラスãŒè¤‡æ•°ã®å´é¢ã‚’æŒã¡ã€ãれãžã‚Œã®å´é¢ãŒç•°ãªã‚‹ã‚¯ãƒ©ã‚¹éšŽå±¤ã§éšŽå±¤åŒ–ã•れるよã†ãªæŸ”軟ã§å†åˆ©ç”¨å¯èƒ½ãªè¨è¨ˆãŒå¯èƒ½ã§ã™ã€‚
ã“ã®ã‚ˆã†ãªè¨è¨ˆã®æŸ”軟性ã¯ã€ç‰¹ã«å¤§è¦æ¨¡ã§è¤‡é›‘ãªã‚¢ãƒ—リケーションã®é–‹ç™ºã‚„メンテナンスã«ãŠã„ã¦é‡è¦ã§ã™ã€‚
「017 インターフェイスã€å•題集リスト
🎯 実習ã§ç†è§£ã‚’æ·±ã‚よã†
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™


コメント