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クラス

  1. Loggable.info("System started") を呼び出す(staticメソッド)
  2. AppLogger のインスタンスを作成し、log("User logged in") を呼ぶ
  3. DebugLogger のインスタンスを作成し、log("Variable x = 42") を呼ぶ

出力形式

[INFO] System started
[APP] User logged in
>>> [DEBUG] Variable x = 42 <<<

コードを実行してみませんか?

この問題のコードエディタと実行機能を使用するには、ログインしてください。

アカウントをお持ちでない方

新規登録