search
LoginSignup
0

posted at

[Java] インターフェースとdefaultメソッド

はじめに

Java学習を始めたばかりです
Java8

インターフェース

定数と抽象メソッドをもつクラスを他のクラスに実装して使う
継承関係にないクラスでもimplementsすれば使うことが出来る
→違うパッケージ内だとimportが必要?
implementsしたら絶対にinterface内の抽象メソッドの実装(オーバーライドしての使用)がそのクラスに必要
継承は一つのクラスしか出来ないがインターフェースは複数指定できるのも特徴

インターフェースはクラスに色を塗るイメージ
(「継承」は枝分かれさせるイメージ)

例)
留学生が来たからStudentクラスとClubクラス(Studentクラスを継承していないと仮定)の名前の表記を英語にしたいな〜ってとき
両方のクラスに英語表記のメソッドを書いていくのはしんどい
(仮にStudentクラスとClubクラスが継承関係であればスーパークラスにメソッドを書けばオッケー?)
→英語表記が出来るメソッドを使ってクラスに同じインターフェース色を塗るイメージ

使い方

インターフェース側

public interface インターフェース名 {・・・}

違うパッケージ内のインターフェースを使いたい側

import パッケージ名.インターフェース名;

public class クラス名 implements インターフェース名, 別のインターフェース名 {・・・}

デフォルトメソッドとは

Java8から使用可能になった
インターフェース内で処理がかける
抽象メソッド(処理は書かないメソッド)は必ずオーバーライドが必要だが、デフォルトメソッドでは処理そのものがかけるためオーバーライドしなくてもそのまま呼び出せる(オーバーライドも可能)

同じメソッド名を複数のインターフェースで定義ができるが、使用する場合は
インターフェース名.super.デフォルトメソッド名();
で使うインターフェースを指定できる

最後に

特にデフォルトメソッドについて思ったより解説記事がなく、合っているのか怪しいところです。
もし間違っていたと気がついたら修正しますが、なにかお気づきの方いらっしゃいましたら教えていただけると幸いです!

最後まで閲覧いただきありがとうございました!

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
0