interface Shape {
double getArea(); // é¢ç©ã‚’計算ã™ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰
double getPerimeter(); // 周囲ã®é•·ã•を計算ã™ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰
}
ã“ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェイスã§ã¯ã€getArea メソッド㨠getPerimeter ãƒ¡ã‚½ãƒƒãƒ‰ãŒæŠ½è±¡ãƒ¡ã‚½ãƒƒãƒ‰ã¨ã—ã¦å®£è¨€ã•れã¦ã„ã¾ã™ã€‚ã“れを実装ã™ã‚‹ã‚¯ãƒ©ã‚¹ã¯ã€ã“れらã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’具体的ã«å®Ÿè£…ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚
複数ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’å«ã‚€ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェイス
Javaã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェイスã¯ã€è¤‡æ•°ã®æŠ½è±¡ãƒ¡ã‚½ãƒƒãƒ‰ã‚„定数をå«ã‚€ã“ã¨ãŒã§ãã¾ã™ã€‚以下ã¯ãã®åŸºæœ¬çš„ãªæ§‹æ–‡ã¨è§£èª¬ã§ã™ã€‚
- 複数ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’å«ã‚€ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェイスã®å®£è¨€:
interface MyInterface {
void method1(); // 抽象メソッド1
void method2(); // 抽象メソッド2
// ä»–ã«ã‚‚æŠ½è±¡ãƒ¡ã‚½ãƒƒãƒ‰ã‚„å®šæ•°ã‚’è¿½åŠ ã§ãã‚‹
}
インターフェイス内ã§è¤‡æ•°ã®æŠ½è±¡ãƒ¡ã‚½ãƒƒãƒ‰ã‚’宣言ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
ã“れらã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯ã€å®Ÿè£…クラスã«ã‚ˆã£ã¦å…·ä½“çš„ãªå®Ÿè£…ã‚’æä¾›ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚
- インターフェイスを実装ã™ã‚‹ã‚¯ãƒ©ã‚¹:
class MyClass implements MyInterface {
@Override
public void method1() {
// method1ã®å…·ä½“çš„ãªå®Ÿè£…
}
@Override
public void method2() {
// method2ã®å…·ä½“çš„ãªå®Ÿè£…
}
}
インターフェイスを実装ã™ã‚‹ã‚¯ãƒ©ã‚¹ã§ã¯ã€å®£è¨€ã•れãŸå…¨ã¦ã®æŠ½è±¡ãƒ¡ã‚½ãƒƒãƒ‰ã‚’実装ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚
@Override アノテーションを使用ã—ã¦ã€ãƒ¡ã‚½ãƒƒãƒ‰ãŒã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェイスã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’オーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã—ã¦ã„ã‚‹ã“ã¨ã‚’明示的ã«ç¤ºã—ã¾ã™ã€‚
- インターフェイス内ã§ã®ãƒ‡ãƒ•ォルトメソッドã¨é™çš„メソッド:
Java 8以é™ã§ã¯ã€ãƒ‡ãƒ•ォルトメソッドã¨é™çš„メソッドもインターフェイス内ã«å®šç¾©ã§ãã¾ã™ã€‚ã“れらã¯å…·ä½“çš„ãªå®Ÿè£…ã‚’æä¾›ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
interface MyInterface {
void method1(); // 抽象メソッド
default void defaultMethod() {
// デフォルトメソッドã®å®Ÿè£…
}
static void staticMethod() {
// é™çš„メソッドã®å®Ÿè£…
}
}
デフォルトメソッド㯠default ã‚ーワードを使用ã—ã¦å®£è¨€ã•ã‚Œã€æ—¢å˜ã®å®Ÿè£…クラスã«å¯¾ã—ã¦å¤‰æ›´ã‚’åŠ ãˆãšã«æ–°ã—ã„ãƒ¡ã‚½ãƒƒãƒ‰ã‚’è¿½åŠ ã§ãã¾ã™ã€‚
é™çš„メソッド㯠static ã‚ーワードを使用ã—ã¦å®£è¨€ã•れã€ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェイスåを使用ã—ã¦ç›´æŽ¥å‘¼ã³å‡ºã™ã“ã¨ãŒã§ãã¾ã™ã€‚
ã“れã«ã‚ˆã‚Šã€ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ã‚¤ã‚¹ã¯æŸ”è»Ÿã§æ‹¡å¼µæ€§ã®ã‚るコードを実ç¾ã™ã‚‹æ‰‹æ®µã¨ãªã‚Šã¾ã™ã€‚
「017 インターフェイスã€å•題集リスト
🎯 実習ã§ç†è§£ã‚’æ·±ã‚よã†
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™


コメント