【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 修飾子がついているやつ。
ひとまず、勉強した内容を書き留めてみたけれど……やっぱ難しい。一朝一夕で覚えられるようなものじゃないんじゃ?
この記事が気に入ったらサポートをしてみませんか?