まとめ:従業員の階層構造
CoddyのJavaジャーニー「オブジェクト指向プログラミング」セクションの一部 — レッスン 27/87。
チャレンジ
簡単この章で学んだすべての継承の概念を統合した、完全な従業員階層システムを構築しましょう。異なるタイプの従業員が共通の属性を共有しつつ、独自の専門的な振る舞いを持つ会社構造を作成します。
コードは4つのファイルに分けて構成します:
Employee.java: すべての従業員が共有するベースクラスを作成します。すべての従業員は名前と給与を持っています。両方のフィールドを初期化するコンストラクタと、[name] earns $[salary]を返すgetDetails()メソッドを含めてください。また、[name] is workingと出力するwork()メソッドも追加してください。Manager.java: Employeeを継承するクラスを作成します。マネージャーには、管理している人数を表すteamSizeフィールドが追加されます。親クラスの初期化を処理するためにsuperを使用してください。work()メソッドをオーバーライドして、[name] is managing a team of [teamSize]と出力するようにします。Manager: [name] earns $[salary], Team size: [teamSize]を返すgetManagerDetails()メソッドを追加してください。Developer.java: Employeeを継承する別のクラスを作成します。デベロッパーには、プログラミングの専門分野を表すlanguageフィールドがあります。ここでも、親クラスの部分にはsuperを使用してください。work()をオーバーライドして、[name] is coding in [language]と出力するようにします。Developer: [name] earns $[salary], Language: [language]を返すgetDeveloperDetails()メソッドを追加してください。Main.java: ここですべてをまとめます。5つの入力を受け取ります:従業員の名前、給与、マネージャーのチームサイズ、別の名前、そしてデベロッパーのプログラミング言語です。ManagerとDeveloperを作成し、それぞれについて専用の詳細メソッドを呼び出した後、work()メソッドを呼び出してください。
入力は、マネージャーの名前 (String)、マネージャーの給与 (double)、チームサイズ (int)、デベロッパーの名前 (String)、プログラミング言語 (String) の順で5つ受け取ります。デベロッパーの給与には 75000.0 を使用してください。
すべての給与値は、String.format("%.2f", salary) を使用して小数点以下2桁でフォーマットしてください。出力は、マネージャーの詳細と仕事の振る舞い、続いてデベロッパーの詳細と仕事の振る舞いの計4行になるはずです。
自分で試してみよう
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 入力を読み込む
String managerName = scanner.nextLine();
double managerSalary = scanner.nextDouble();
int teamSize = scanner.nextInt();
scanner.nextLine(); // 改行文字を消費する
String developerName = scanner.nextLine();
String language = scanner.nextLine();
// Developer の給与は 75000.0 に固定されている
double developerSalary = 75000.0;
// TODO: managerName、managerSalary、teamSize を使用して Manager オブジェクトを作成する
// TODO: developerName、developerSalary、language を使用して Developer オブジェクトを作成する
// TODO: getManagerDetails() を使用してマネージャーの詳細を表示する
// TODO: マネージャーの work() メソッドを呼び出す
// TODO: getDeveloperDetails() を使用して開発者の詳細を表示する
// TODO: 開発者の work() メソッドを呼び出す
}
}
オブジェクト指向プログラミングのすべてのレッスン
4継承
継承の基本 (extends)super キーワードメソッドのオーバーライド (@Override)コンストラクタチェーンObject クラス単一継承と多段階継承なぜ多重継承ができないのかまとめ:従業員の階層構造