見出し画像

【JavaSilver #05】インターフェイスわかんね~~委員会

インターフェイスってなに?
→クラスから『型』だけを取り出したクラス。
つまりどういうこと?
→さあ?(!?)

インターフェイスってどんなもの?

・メソッドの内容が書けないクラス
(※ただし、default を先頭につけることで書けるようになるし、継承もされる)
・オーバーライド(戻り値・メソッド名・引数の型・引数の数 が一緒のメソッドを子クラスで定義する)して使うのが抽象クラス

ルール

・メソッドにアクセス修飾子を書かなくても、『public』になる。
→private、protected は使えない。
・多重実現が可能(public class Test implements InterfaceA, InterfaceB { ~のように書ける)
※普通のクラスの継承は、1つまでしかできない
・フィールドは、『定数』『static変数』のみ定義できる
・インターフェイスに定義したメソッドは、実現したクラス側で『必ず』実装しないといけない
・インターフェイスはインスタンス化できない(インスタンス化できない)
・インターフェイスはインスタンス化できない(私は3回くらい引っかかったので二度!!メチャだいじ!!)

インターフェイスの多重実現時のあれこれ

public class Main implements A, B{
  public static void main(String args[]) {
    new Main().print();
  }
}
interface A {
  default void print() {
    System.out.print("A");
  }
}
interface B {
  default void print() {
    System.out.print("B");
  }
}

こんな感じで、複数のクラスに同様のメソッドがあった場合。
Mainクラスで、『どっちを使えばいいかわからないよ』というエラーが出る。
こういうときは、アノテーションを付けて、Mainクラスで実装すれば解決。

public class Main implements A, B{
  public static void main(String args[]) {
    new Main().print();
  }
  public void print() {
    A.super.print();
  }
}

抽象クラスってなに??

インターフェイスと、通常のクラス 両方の性質を併せ持ったクラス。
abstract 修飾子がついているやつ。

ひとまず、勉強した内容を書き留めてみたけれど……やっぱ難しい。一朝一夕で覚えられるようなものじゃないんじゃ?

この記事が気に入ったらサポートをしてみませんか?