1. 程式人生 > >抽象類+內部類使用

抽象類+內部類使用

一、目的

       通過學生編號(Student_id ),找到對應 的班級

二、說明

       需掌握知識:

              抽象類

              類部類

三、例項程式碼

1、ClassRoom.java

package abstract_test;

public abstract class ClassRoom {
	
	// 根據學生id 找到 對應 班級
	private String classRoom;

	public ClassRoom(String classRoom ){
		this.classRoom = classRoom;
	}
	
	public String getClassRoom() {
		return classRoom;
	}

	public void setClassRoom(String classRoom) {
		this.classRoom = classRoom;
	}

	abstract void findClass();
	
	// 靜態內部類
	public static class Student{
		
		private String ClassRoom_id;  // 班級

		public Student(String Student_id){     // 10207150486,
			String ClassRoom_id = Student_id.substring(5, 7);  // 取 15 
			this.ClassRoom_id = ClassRoom_id ;
		}

		public String getClassRoom_id() {
			return ClassRoom_id;
		}

		public void setClassRoom_id(String classRoom_id) {
			ClassRoom_id = classRoom_id;
		}
	}
	
}

2、Component.java

package abstract_test;

import java.util.ArrayList;
import java.util.List;

public class Component {
	// 存放班級列表
	public static List<ClassRoom> classRooms = new ArrayList<>();
	
	// 三個班級
	private static ClassRoom c1 = new ClassRoom("01"){
		@Override
		void findClass() {
			System.out.println("這是1班學生");
		}
	};
		
	private static ClassRoom c2 = new ClassRoom("02"){
		@Override
		void findClass() {
			System.out.println("這是2班學生");
		}
	};
	
	private static ClassRoom c15 = new ClassRoom("15"){
		@Override
		void findClass() {
			System.out.println("這是15班學生");
		}
	};
	
	// 將班級新增到 List<ClassRoom> 的方法
	public static void addClassRoom(ClassRoom c){
		classRooms.add(c);
	}
	
	// 啟動後,自動載入 (重要知識)
	static {
		addClassRoom(c1);
		addClassRoom(c2);
		addClassRoom(c15);
	}
	
	
	// 根據 class_id 判別是 哪個班級學生
	public static  ClassRoom getClass(String class_id){
		for(ClassRoom c : classRooms){
			if(c.getClassRoom().equals(class_id)){
				return c ;
			}
		}
		return null ;
	} 
	
}

3、Test.java

package abstract_test;

import abstract_test.ClassRoom.Student;

public class Test {
	public static void main(String[] args) {
		Student s1 = new Student("10207150486");
		String class_id = s1.getClassRoom_id();
		
		ClassRoom c = Component.getClass(class_id);
		c.findClass();
		
		System.out.println("============");
		
		Student s2 = new Student("10207010486");
		c = Component.getClass(s2.getClassRoom_id());
		c.findClass();
		
	}
	
	/*
		輸出結果:
			這是15班學生
			============
			這是1班學生
	 */

}