// æ—¢å˜ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェイス BaseInterface
interface BaseInterface {
void existingMethod();
}
// æ–°ã—ã„インターフェイス ExtendedInterface
interface ExtendedInterface extends BaseInterface {
// æ–°ã—ã„メソッドã®å®£è¨€
void newMethod();
}
// インターフェイスを実装ã™ã‚‹ã‚¯ãƒ©ã‚¹
class MyClass implements ExtendedInterface {
// BaseInterface ã®ãƒ¡ã‚½ãƒƒãƒ‰ã®å®Ÿè£…
@Override
public void existingMethod() {
System.out.println("Existing Method implementation");
}
// ExtendedInterface ã®æ–°ã—ã„メソッドã®å®Ÿè£…
@Override
public void newMethod() {
System.out.println("New Method implementation");
}
}
// メインクラス
public class Main {
public static void main(String[] args) {
// インターフェースを実装ã—ãŸã‚¯ãƒ©ã‚¹ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’作æˆ
MyClass myObject = new MyClass();
// BaseInterface ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’呼ã³å‡ºã—
myObject.existingMethod();
// ExtendedInterface ã®æ–°ã—ã„メソッドを呼ã³å‡ºã—
myObject.newMethod();
}
}
ã“ã®ä¾‹ã§ã¯ã€BaseInterface ã«ã¯æ—¢å˜ã®ãƒ¡ã‚½ãƒƒãƒ‰ãŒã‚りã€ExtendedInterface 㯠BaseInterface ã‚’æ‹¡å¼µã—ã¦æ–°ã—ã„ãƒ¡ã‚½ãƒƒãƒ‰ã‚’è¿½åŠ ã—ã¦ã„ã¾ã™ã€‚MyClass クラス㯠ExtendedInterface を実装ã—ã€ä¸¡æ–¹ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’実装ã—ã¦ã„ã¾ã™ã€‚最終的ã«ã€Main クラスã§ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’作æˆã—ã¦ãƒ¡ã‚½ãƒƒãƒ‰ã‚’呼ã³å‡ºã—ã¦ã„ã¾ã™ã€‚
ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ã‚¤ã‚¹ã®æ‹¡å¼µ
ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã®æ‹¡å¼µã¯ã€æ—¢å˜ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã«æ–°ã—ã„ãƒ¡ã‚½ãƒƒãƒ‰ã‚„æŠ½è±¡ãƒ¡ã‚½ãƒƒãƒ‰ã‚’è¿½åŠ ã™ã‚‹ã“ã¨ã‚’指ã—ã¾ã™ã€‚ã“れã«ã‚ˆã‚Šã€æ—¢å˜ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェースを拡張ã—ãŸæ–°ã—ã„インターフェースãŒä½œæˆã•れã¾ã™ã€‚以下ã«ã€ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã®æ‹¡å¼µã«é–¢ã™ã‚‹ã„ãã¤ã‹ã®é‡è¦ãªãƒã‚¤ãƒ³ãƒˆã‚’示ã—ã¾ã™ã€‚
- æ–°ã—ã„メソッドã®è¿½åŠ :
- ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã®æ‹¡å¼µã§ã¯ã€æ–°ã—ã„ãƒ¡ã‚½ãƒƒãƒ‰ã‚’è¿½åŠ ã§ãã¾ã™ã€‚
- ã“れã«ã‚ˆã‚Šã€æ—¢å˜ã®ã‚¯ãƒ©ã‚¹ã‚„ä»–ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ãŒæ–°ã—ã„メソッドを実装ã™ã‚‹å¿…è¦ãŒç”Ÿã˜ã¾ã™ã€‚
- extends ã‚ーワードã®ä½¿ç”¨:
- インターフェースãŒä»–ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェースを拡張ã™ã‚‹å ´åˆã€
extendsã‚ーワードを使用ã—ã¾ã™ã€‚ - 例:
interface ExtendedInterface extends BaseInterface { ... }
- インターフェースãŒä»–ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェースを拡張ã™ã‚‹å ´åˆã€
- 複数ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã®æ‹¡å¼µ:
- 1ã¤ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェースãŒè¤‡æ•°ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェースを拡張ã§ãã¾ã™ã€‚
- 例:
interface ExtendedInterface extends InterfaceA, InterfaceB { ... }
- æ—¢å˜ã®ã‚¯ãƒ©ã‚¹ã¸ã®å½±éŸ¿:
- æ—¢å˜ã®ã‚¯ãƒ©ã‚¹ãŒæ‹¡å¼µã•ã‚ŒãŸæ–°ã—ã„インターフェースを実装ã™ã‚‹å ´åˆã€æ–°ã—ã„メソッドを実装ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚
- æ—¢å˜ã®ã‚¯ãƒ©ã‚¹ãŒã“れを行ã‚ãªã„å ´åˆã€æŠ½è±¡ã‚¯ãƒ©ã‚¹ã‚’使用ã™ã‚‹ãªã©ã®å¯¾ç–ãŒå¿…è¦ã§ã™ã€‚
以下ã¯ã€æ–°ã—ã„ãƒ¡ã‚½ãƒƒãƒ‰ã‚’è¿½åŠ ã—ãŸæ‹¡å¼µã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェースã®ä¾‹ã§ã™ã€‚
// æ—¢å˜ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェース
interface BaseInterface {
void existingMethod();
}
// æ‹¡å¼µã—ãŸæ–°ã—ã„インターフェース
interface ExtendedInterface extends BaseInterface {
// æ–°ã—ã„メソッドã®å®£è¨€
void newMethod();
}
// インターフェースを実装ã™ã‚‹ã‚¯ãƒ©ã‚¹
class MyClass implements ExtendedInterface {
// BaseInterface ã®ãƒ¡ã‚½ãƒƒãƒ‰ã®å®Ÿè£…
@Override
public void existingMethod() {
System.out.println("Existing Method implementation");
}
// ExtendedInterface ã®æ–°ã—ã„メソッドã®å®Ÿè£…
@Override
public void newMethod() {
System.out.println("New Method implementation");
}
}
// メインクラス
public class Main {
public static void main(String[] args) {
// インターフェースを実装ã—ãŸã‚¯ãƒ©ã‚¹ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’作æˆ
MyClass myObject = new MyClass();
// BaseInterface ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’呼ã³å‡ºã—
myObject.existingMethod();
// ExtendedInterface ã®æ–°ã—ã„メソッドを呼ã³å‡ºã—
myObject.newMethod();
}
}
ã“ã®ä¾‹ã§ã¯ã€ExtendedInterface ㌠BaseInterface ã‚’æ‹¡å¼µã—ã€æ–°ã—ã„メソッド newMethod ã‚’è¿½åŠ ã—ã¦ã„ã¾ã™ã€‚MyClass クラス㯠ExtendedInterface を実装ã—ã€ä¸¡æ–¹ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’実装ã—ã¦ã„ã¾ã™ã€‚
「拡張ã€ã¨ã€Œç¶™æ‰¿ã€ã®é•ã„ã¯ï¼Ÿ
「拡張ã€ï¼ˆextends)ã¨ã€Œç¶™æ‰¿ã€ã¯ã€Javaã«ãŠã„ã¦åŒã˜æ„味を指ã—ã¾ã™ã€‚Javaã§ã¯ã€Œæ‹¡å¼µã€ï¼ˆextendsï¼‰ãŒæ£ç¢ºãªç”¨èªžã§ã‚りã€ä¸€èˆ¬çš„ã«ã€Œç¶™æ‰¿ã€ã¨ã—ã¦ã‚‚知られã¦ã„ã¾ã™ã€‚以下ã«ãã®é•ã„を明確ã«ã—ã¾ã—ょã†ï¼š
拡張(extends):
Javaã«ãŠã„ã¦ã€ã‚¯ãƒ©ã‚¹ãŒä»–ã®ã‚¯ãƒ©ã‚¹ã‚’æ‹¡å¼µã™ã‚‹ãŸã‚ã®ã‚ーワードã¨ã—ã¦ã€Œextendsã€ãŒä½¿ç”¨ã•れã¾ã™ã€‚
クラスãŒåˆ¥ã®ã‚¯ãƒ©ã‚¹ã‚’æ‹¡å¼µã™ã‚‹ã¨ã€è¦ªã‚¯ãƒ©ã‚¹ã®ãƒ•ィールドã¨ãƒ¡ã‚½ãƒƒãƒ‰ã‚’継承ã—ã¾ã™ã€‚
class ChildClass extends ParentClass {
// ChildClassã¯ParentClassã‚’æ‹¡å¼µã—ã¦ã„ã¾ã™
}
継承:
一般的ãªãƒ—ãƒã‚°ãƒ©ãƒŸãƒ³ã‚°ã®æ–‡è„ˆã§ã€Œç¶™æ‰¿ã€ã¨ã„ã†ç”¨èªžãŒä½¿ã‚れるã“ã¨ãŒã‚りã¾ã™ãŒã€Javaã®æ–‡è„ˆã§ã¯ä¸»ã«ã€Œæ‹¡å¼µã€ï¼ˆextends)ãŒä½¿ã‚れã¾ã™ã€‚
一般的ã«ã¯ã€ã‚¯ãƒ©ã‚¹ãŒä»–ã®ã‚¯ãƒ©ã‚¹ã®ç‰¹æ€§ã‚’引ãç¶™ãプãƒã‚»ã‚¹ã‚’指ã—ã¾ã™ã€‚
ã—ãŸãŒã£ã¦ã€Javaã«ãŠã„ã¦ã¯ã€Œæ‹¡å¼µã€ãŒæ£ç¢ºãªç”¨èªžã§ã‚りã€ã€Œç¶™æ‰¿ã€ã¨åŒç¾©ã¨ã—ã¦ä½¿ç”¨ã•れã¾ã™ã€‚ä»–ã®ãƒ—ãƒã‚°ãƒ©ãƒŸãƒ³ã‚°è¨€èªžã§ã¯ã€Œç¶™æ‰¿ã€ãŒç”¨ã„られるã“ã¨ãŒã‚りã¾ã™ãŒã€Javaã§ã¯å…¬å¼ã«ã¯ã€Œextendsã€ãŒä½¿ç”¨ã•れã¾ã™ã€‚
「017 インターフェイスã€å•題集リスト
🎯 実習ã§ç†è§£ã‚’æ·±ã‚よã†
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™


コメント