01/10/2018, 17:18
Cần giúp đỡ về ArrayList
Mình có 4 class:
- Class Nhân Viên: Mã Nhân Viên, Tên Nhân Viên, Lương Cơ Bản
- Class Nhân Viên Văn Phòng (Kế thừa Class Nhân Viên)
- Class Nhân Viên Tiếp Thị (Kế thừa Class Nhân Viên): Có thêm Hoa Hồng, Doanh Số
- Class Trưởng Phòng (Kế thừa từ Class Nhân Viên): Có thêm Lương Trách Nhiệm.
Mình tạo 1 phương thức Nhập có tham số truyền vào là 1 ArrayList<Nhân Viên>.và mình nhét tất cả nhân viên ở các vị trí khác nhau vào cùng 1 ArrayList đó. Code bên dưới.
public static void nhapDSNV(ArrayList<NhanVien> arr) {
//NhanVien nv;
Scanner sc = new Scanner(System.in);
System.out.println("Chon loai nhan vien ban muon nhap thong tin (1. NV Van phong, 2. NV iep thi, 3. Truong phong): ");
int loaiNV = Integer.parseInt(sc.nextLine());
if (loaiNV == 1) {
NVVanPhong nv1 = new NVVanPhong();
System.out.println("Nhap Ma NV: ");
nv1.setMaNV(sc.nextLine());
System.out.println("Nhap Ten NV: ");
nv1.setTenNV(sc.nextLine());
System.out.println("Nhap Luong: ");
nv1.setLuongNV(sc.nextDouble());
arr.add(nv1);
} else if (loaiNV == 2) {
NVTiepThi nv2 = new NVTiepThi();
System.out.println("Nhap Ma NV: ");
nv2.setMaNV(sc.nextLine());
System.out.println("Nhap Ten NV: ");
nv2.setTenNV(sc.nextLine());
System.out.println("Nhap Luong NV: ");
nv2.setLuongNV(sc.nextDouble());
System.out.println("Nhap Ty Le Hoa Hong: ");
nv2.setTyLeHoaHong(sc.nextDouble());
System.out.println("Nhap DS ban ra: ");
nv2.setDoanhSo(sc.nextDouble());
arr.add(nv2);
} else if (loaiNV == 3) {
NVTruongPhong nv3 = new NVTruongPhong();
System.out.println("Nhap Ma NV: ");
nv3.setMaNV(sc.nextLine());
System.out.println("Nhap Ten NV: ");
nv3.setTenNV(sc.nextLine());
System.out.println("Nhap Luong NV: ");
nv3.setLuongNV(sc.nextDouble());
System.out.println("Nhap Luong Trach Nhiem: ");
nv3.setLuongTrachNhiem(sc.nextDouble());
arr.add(nv3);
} else {
System.out.println("Ban da nhap sai lua chon!");
}
}
Code vẫn thực thi được bình thường.
Câu hỏi:
- Mình làm thế có đúng bản chất không, hay phải truyền vào 3 ArrayList và mỗi loại nhân viên sẽ đẩy vào 1 ArrayList?
- Nếu mình duyệt ArrayList như thế này:
for(NhanVien nv : arr){
//nv ở đây chỉ lấy được nhưng biến của Class NhanVien. Làm sao mình có thể lấy được cả các biến của Class NVTiepThi, NVTruongPhong
}
Bài liên quan
Đúng nhé Vì tất cả đều được kế thừa từ
NhanVien
nên có thể cho vào chung 1Arraylist
hoặcHashMap
:;Bạn có thể sử dụng
Upcasting
nhéhttps://techblog.vn/upcasting-and-downcasting-in-java
Tuyệt vời! Cảm ơn bạn nhiều nhé!!!