抽象類+內部類使用
阿新 • • 發佈:2019-01-22
一、目的
通過學生編號(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班學生 */ }