// Calculator インターフェイスã®å®£è¨€
interface Calculator {
// デフォルトメソッド add ã®å®£è¨€
default int add(int a, int b) {
return a + b;
}
}
// ScientificCalculator インターフェイスã®å®£è¨€
interface ScientificCalculator {
// デフォルトメソッド squareRoot ã®å®£è¨€
default double squareRoot(double x) {
return Math.sqrt(x);
}
}
// BasicCalculator インターフェイスã®å®£è¨€
interface BasicCalculator extends Calculator, ScientificCalculator {
// ä½•ã‚‚è¿½åŠ ã®å®£è¨€ã¯å¿…è¦ãªã—
}
// テスト用ã®ã‚¯ãƒ©ã‚¹
public class Main {
public static void main(String[] args) {
// BasicCalculator インターフェイスã®å®Ÿè£…ã‚’æŒã¤ã‚ªãƒ–ジェクトを作æˆ
BasicCalculator calculator = new BasicCalculator() {};
// デフォルトメソッド add ã®ä½¿ç”¨
int sum = calculator.add(5, 3);
System.out.println("Sum: " + sum);
// デフォルトメソッド squareRoot ã®ä½¿ç”¨
double sqrtResult = calculator.squareRoot(25.0);
System.out.println("Square Root: " + sqrtResult);
}
}
ã“ã®ä¾‹ã§ã¯ã€Calculator インターフェイス㫠add メソッドãŒã‚りã€ScientificCalculator インターフェイス㫠squareRoot メソッドãŒã‚りã¾ã™ã€‚ãã—ã¦ã€BasicCalculator インターフェイス㯠Calculator インターフェイス㨠ScientificCalculator インターフェイスを継承ã—ã€ScientificCalculator インターフェイスã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’実装ã—ã¾ã™ã€‚最後ã«ã€Main クラス㧠BasicCalculator インターフェイスã®å®Ÿè£…ã‚’æŒã¤ã‚ªãƒ–ジェクトを作æˆã—ã€ãƒ‡ãƒ•ォルトメソッドを使用ã—ã¦ã„ã¾ã™ã€‚
デフォルトメソッドã¨é™çš„メソッド
Java 8以é™ã€ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェースã«ãƒ‡ãƒ•ォルトメソッドã¨é™çš„メソッドを導入ã—ã¾ã—ãŸã€‚ã“れã«ã‚ˆã‚Šã€æ—¢å˜ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェイスを変更ã™ã‚‹ã“ã¨ãªãæ–°ã—ã„ãƒ¡ã‚½ãƒƒãƒ‰ã‚’è¿½åŠ ã§ãるよã†ã«ãªã‚Šã€ã•らã«ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェイス内ã§ãƒ¡ã‚½ãƒƒãƒ‰ã®å®Ÿè£…ã‚’æä¾›ã§ãるよã†ã«ãªã‚Šã¾ã—ãŸã€‚以下ã«ã€ãƒ‡ãƒ•ォルトメソッドã¨é™çš„メソッドã«ã¤ã„ã¦è§£èª¬ã—ã¾ã™ã€‚
デフォルトメソッド
デフォルトメソッドã¯ã€ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェース内ã§ãƒ¡ã‚½ãƒƒãƒ‰ã®å®Ÿè£…ã‚’æä¾›ã™ã‚‹æ‰‹æ®µã§ã™ã€‚ã“れã«ã‚ˆã‚Šã€æ—¢å˜ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェイスを変更ã›ãšã«æ–°ã—ã„æ©Ÿèƒ½ã‚’è¿½åŠ ã§ãã¾ã™ã€‚デフォルトメソッド㯠default ã‚ーワードを使用ã—ã¦å®£è¨€ã•れã¾ã™ã€‚
interface MyInterface {
// デフォルトメソッド
default void myDefaultMethod() {
System.out.println("Default implementation");
}
// æŠ½è±¡ãƒ¡ã‚½ãƒƒãƒ‰ï¼ˆé€šå¸¸ã®æŠ½è±¡ãƒ¡ã‚½ãƒƒãƒ‰ã‚‚ä½µç”¨ã§ãる)
void regularMethod();
}
class MyClass implements MyInterface {
// MyInterface ã§ã®ãƒ‡ãƒ•ォルトメソッドã®ã‚ªãƒ¼ãƒãƒ¼ãƒ©ã‚¤ãƒ‰
@Override
public void regularMethod() {
System.out.println("Regular method implementation");
}
}
public class Main {
public static void main(String[] args) {
MyClass myObject = new MyClass();
myObject.myDefaultMethod(); // デフォルトメソッドã®å‘¼ã³å‡ºã—
myObject.regularMethod(); // 通常ã®ãƒ¡ã‚½ãƒƒãƒ‰ã®å‘¼ã³å‡ºã—
}
}
é™çš„メソッド
é™çš„メソッドã¯ã€ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェースã«é–¢é€£ä»˜ã‘られãŸã‚¯ãƒ©ã‚¹ãƒ¬ãƒ™ãƒ«ã®ãƒ¦ãƒ¼ãƒ†ã‚£ãƒªãƒ†ã‚£ãƒ¡ã‚½ãƒƒãƒ‰ã‚’æä¾›ã™ã‚‹ãŸã‚ã®æ‰‹æ®µã§ã™ã€‚ã“れらã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯ static ã‚ーワードを使用ã—ã¦å®£è¨€ã•れã¾ã™ã€‚
interface MyInterface {
// é™çš„メソッド
static void myStaticMethod() {
System.out.println("Static method");
}
// 抽象メソッド
void regularMethod();
}
class MyClass implements MyInterface {
// MyInterface ã§ã®æŠ½è±¡ãƒ¡ã‚½ãƒƒãƒ‰ã®å®Ÿè£…
@Override
public void regularMethod() {
System.out.println("Regular method implementation");
}
}
public class Main {
public static void main(String[] args) {
MyInterface.myStaticMethod(); // é™çš„メソッドã®å‘¼ã³å‡ºã—
MyClass myObject = new MyClass();
myObject.regularMethod(); // 通常ã®ãƒ¡ã‚½ãƒƒãƒ‰ã®å‘¼ã³å‡ºã—
}
}
ã“れらã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯ã€å®Ÿè£…ã™ã‚‹ã‚¯ãƒ©ã‚¹ã«ã‚ˆã£ã¦ã‚ªãƒ¼ãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã•れるã“ã¨ã¯ã‚りã¾ã›ã‚“。インターフェースã®å¤–部ã‹ã‚‰å‘¼ã³å‡ºã•ã‚Œã‚‹å ´åˆã¯ã€ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェースå.メソッドå() ã®å½¢å¼ã§å‘¼ã³å‡ºã—ã¾ã™ã€‚デフォルトメソッドã¨é™çš„メソッドã¯ã€ã‚³ãƒ¼ãƒ‰ã®å†åˆ©ç”¨æ€§ã¨æ‹¡å¼µæ€§ã‚’å‘上ã•ã›ã‚‹ãŸã‚ã®ä¾¿åˆ©ãªæ©Ÿèƒ½ã§ã™ã€‚
「017 インターフェイスã€å•題集リスト
🎯 実習ã§ç†è§£ã‚’æ·±ã‚よã†
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™


コメント