teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

インタフェース実装義務

2019/12/02 06:51

投稿

swordone
swordone

スコア20675

answer CHANGED
@@ -1,3 +1,7 @@
1
1
  `@Override`を宣言した以上、そのメソッドは親クラスや実装したインタフェースのメソッドをオーバーライドしなければいけません。
2
2
  実装しているRunnableインタフェースは、引数なしの`run()`メソッドを持ちますが、引数のある`run(int, int, int)`は持ちません。
3
- つまり、オーバーライドの条件を満たしていないため、コンパイルエラーとなります。
3
+ つまり、オーバーライドの条件を満たしていないため、コンパイルエラーとなります。
4
+
5
+ `@Override`をなくすと、上記理由がなくなるのでそのコンパイルエラーは消えますが、Runnableインタフェースを実装した以上、引数なしの`run()`メソッドを実装する義務があります。こっちの義務を果たしていないため、やはりコンパイルエラーになります。
6
+
7
+ 結局、引数ありの`run(int, int, int)`メソッドから起動するということは不可能です。引数なしの`run()`から、別メソッドを呼ぶなどの形しかないです。