017-003-007
デフォルトメソッドと静的メソッド
中級
問題説明
デフォルトメソッドと静的メソッド
この問題では: Loggableインターフェイスにデフォルトメソッドとstaticメソッドを定義し、実装クラスがデフォルトメソッドをそのまま使う場合とオーバーライドする場合の挙動を確認するプログラムを作成します。
学習目標: Java 8で導入されたインターフェイスのデフォルトメソッドとstaticメソッドの定義方法と使い分けを理解する
概要
インターフェイス Loggable にデフォルトメソッドとstaticメソッドを定義し、実装クラスがデフォルトメソッドをそのまま使う場合とオーバーライドする場合の挙動を確認するプログラムを作成してください。
仕様
Loggableインターフェイス
String getTag()抽象メソッドを宣言する(実装クラスが定義)default void log(String message)デフォルトメソッドを定義し、"[{getTag()}] {message}"形式で出力するstatic void info(String message)staticメソッドを定義し、"[INFO] {message}"形式で出力する
AppLoggerクラス(Loggableを実装)
getTag()メソッドで"APP"を返す- デフォルトのlog()メソッドをそのまま使用する
DebugLoggerクラス(Loggableを実装)
getTag()メソッドで"DEBUG"を返すlog()メソッドをオーバーライドし、">>> [{getTag()}] {message} <<<"形式で出力する
Mainクラス
Loggable.info("System started")を呼び出す(staticメソッド)AppLoggerのインスタンスを作成し、log("User logged in")を呼ぶDebugLoggerのインスタンスを作成し、log("Variable x = 42")を呼ぶ
出力形式
[INFO] System started
[APP] User logged in
>>> [DEBUG] Variable x = 42 <<<
