Constant2301.java
package lesson23;
public class Constant2301 {
public static final String POLICE = "警察官";
public static final String TEACHER = "教師";
public static final String CHEF = "料理人";
}
Chef2301.java
package lesson23;
public class Chef2301 extends Worker2301 {
public Chef2301(String name, int age) {
super(Constant2301.CHEF, name, age);
}
public void doWork() {
System.out.println("食事を作ります。");
}
}
Display2301..java
package lesson23;
public class Display2301 {
public static void displayWorkers(Worker2301[] workers) {
for(Worker2301 worker : workers) {
worker.showIntroduction();
worker.doWork();
}
}
}
Police2301.java
package lesson23;
public class Police2301 extends Worker2301 {
public Police2301(String name, int age) {
super(Constant2301.POLICE, name, age);
}
public void doWork() {
System.out.println("地域や人々の安全を守ります。");
}
}
Sample2301.java
package lesson23;
public class Sample2301 {
public static void main(String[] args) {
Worker2301[] workers = new Worker2301[3];
// サブクラスのオブジェクトを配列に追加
// 警察官クラスのオブジェクトを生成して、コンストラクタを呼び出す
workers[0] = new Police2301("田中", 28);
// 教師クラスのオブジェクトを生成して、コンストラクタを呼び出す
workers[1] = new Teacher2301("佐藤", 53);
// 料理人クラスのオブジェクトを生成して、コンストラクタを呼び出す
workers[2] = new Chef2301("鈴木", 31);
// 出力用クラスに各オブジェクト情報を渡す
Display2301.displayWorkers(workers);
}
}
Teacher.java
package lesson23;
public class Teacher2301 extends Worker2301 {
public Teacher2301(String name, int age) {
super(Constant2301.TEACHER, name, age);
}
public void doWork() {
System.out.println("知識を教えます。");
}
}
Worker2301.java
package lesson23;
public abstract class Worker2301 {
protected String job;
protected String name;
protected int age;
Worker2301(String job, String name, int age){
this.job = job;
this.name = name;
this.age = age;
}
public void showIntroduction() {
System.out.println("名前は" + name + "、年齢は" + age + "歳、職業は" + job + "です。");
}
public abstract void doWork();
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}