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;
	}
}