Professional Documents
Culture Documents
Abstract: là 1 lớp mơ hồ, trừu tượng, không rõ ràng, phương thức abstract không có
{}
Static class: chỉ có ở lớp trong của 1 lớp
Biến static: có kế thừa, không ghi đè,
Final: đi với biến là hằng, đi với phương thức thì không ghi đè, đi với class thì
không kế thừa
PHƯƠNG THỨC KHỞI TẠO
CONSTRUCTOR: không kế thừa, được gọi từ cha đến con, được gọi đầu tiên,
trùng tên lớp, không có dữ liệu trả về, cú pháp: [AccessModifier] TênLớp([ThamSố]);
- Default constructor (phương thức khởi tạo không tham số)
- Phương thức khởi tạo có tham số
- Copy constructor
DESTRUCTOR: đóng gói, giải phóng dữ liệu, tránh rò rỉ bộ nhớ (leak memory),
không kế thừa, được gọi từ con lên cha
Tại sao java không có destructor ?
- Do có Garbage collector
Sự khác nhau giữa constructor và setter
- Khác nhau ở thời điểm gọi, lần đầu tiên gọi thì dùng constructor
ACCCSESS MODIFIER:
PUBLIC > PROTECTED > DEFAULT > PRIVATE
So sánh static với biến thường
Static Non static
- Được truy cập thông qua tên lớp - Được truy cập thông qua instance
của lớp
- Có thể được truy cập bởi phương - Không thể truy cập trong phương
thức tĩnh hoặc phương thức bình thức tĩnh
thường
- Giảm dung lượng bộ nhớ được sử - Không làm giảm dung lượng bộ
dụng nhớ
- Được chia sẻ giữa tất cả instance - Cụ thể cho instance của 1 lớp
trong 1 lớp
- Như 1 biến toàn cục, dùng được - Như 1 biến cục bộ, chỉ đc truy
cho tất cả phương thức cập thông qua instance của một
lớp
Kết hợp
- public, protected, default kết hợp với được hết ngoại trừ private không đi với
abstract được
- stastic, final không đi với abstract được
Nhận biết: quan hệ nhiều – nhiều, bên A có b: B[] hoặc b: B và bên B có a: A[] hoặc
a: A
Quan hệ Aggregation
Nhận biết: quan hệ 1 – nhiều, số 1 nằm trên hình thoi, has – a, phải có quan hệ
association trước, A có thuộc tính của B, lớp A bị hủy thì lớp B vẫn tồn tại
Quan hệ Composition
Nhận biết: quan hệ 1 – nhiều, số 1 nằm trên hình thoi, has – a, phải có quan hệ
association trước, A có thuộc tính của B, lớp A bị hủy thì lớp B bị hủy theo
Quan hệ Kế thừa
Nhận biết: quan hệ 1-1
Mặc định 1 lớp kế thừa lớp nào ? Trình bày vài phương thức quan trọng
- Lớp object, các phương thức gồm có:
▪ toString(): trả về chuỗi đại diện cho đối tượng.
- ▪ equals(Object obj): kiểm tra hai đối tượng có bằng nhau.
- ▪ hashCode(): trả về mã băm của đối tượng.
- ▪ clone(): sao chép đối tượng ra đối tượng mới.
- ▪ getClass(): trả về lớp mà đối tượng được tạo ra.
Immutable class
Ví dụ 1 immutable class:
- Thuộc tính là private
- Không có phương thức thay đổi
dữ liệu hay trả về tham chiếu có
thể thay đổi dữ liệu của thuộc
tính
➔ Lỗi ở dòng thứ 10, lỗi biên dịch vì không có constructor không tham số
➔ p1, p6
public class PhanSo { System.out.println(this.tuSo + "/"
+ this.mauSo);
private int tuSo;
}
private int mauSo;
Kết quả: 10
999
Giải thích:
Kết quả: 4
10
Giải thích:
Kết quả: 9
Giải thích:
Trong phương thức tĩnh không truy xuất được thành viên riêng của lớp
ABC
Lỗi ở dòng 7, lỗi biên dịch, lớp A không có constructor không tham số
ATB
Lỗi dòng 7, phạm vi truy cập của B phải lớn hơn của A
CAB
A
Ra 1 do B khác gói A nên trong B không thừa hưởng void inc() của A -> không ghi đè
ERROR
A
DONE
Finally
DivideByZero
CHƯƠNG 4:
So sánh lớp abstract & interface ?
Giống:
- Không được tạo đối tượng
- Đều chứa phương thức trừu tượng
Khác:
Abstract Interface
- Có đủ đặc tính lớp thường - Chứa phương thức trừu tượng,
tĩnh không có phương thức khởi
tạo
- Đơn kế thừa - Đa hiện thực
- Có constructor, static,… - Chỉ chứa thuộc tính final, static
Lỗi biên dịch tại dòng void show() của lớp B do phương thức override phải public
Lỗi biên dịch tại dòng class AB, do chưa override phương thức void show(String s)
của interface IB
Lỗi thực thi, chưa chỉ chương trình biết sort thế nào, sửa:
class Student implements }
Comparable<Student>{
private int id;
@Override
public Student(int id) {
public int compareTo(Student t) {
this.id = id;
return -(this.id - t.id);
}
}