• Chào bạn, hãy đăng ký hoặc đăng nhập để tham gia cùng bọn mình và sử dụng được đầy đủ chức năng của diễn đàn :).
anhcraft

Java Java cơ bản #9: Từ khóa extends

anhcraft

Thành viên BQT
DEVELOPER
THÀNH VIÊN
Tham gia
18/09/2016
Bài viết
3,165
Java là một ngôn ngữ full OOP. Đó là lý do vì sao bạn phải cần Class, Method, Variable để code.
Một đặc tính quan trọng của OOP chính là inheritance (tính kế thừa) - cái mà mình sẽ giải thích trong bài này.
Chú ý: mọi thứ có từ khóa static không liên quan tới tính kế thừa nhé :D (Vì chúng độc lập nên không kế thừa được)

Tính kế thừa tức là một đối tượng (Object) có thể kế thừa các đặc tính (Non-static Method, Instance variable) của đối tượng khác. Thực tế một chút, điều này giống với khả năng di truyền của sinh vật, sinh vật con mang đặc tính của bố, mẹ nó.
Ví dụ: Bạn muốn làm plugin Rank cho server. Bạn muốn Rank cao hơn vẫn có quyền lợi của rank cũ. Ở đây đã xuất hiện tính kế thừa: rank cao hơn kế thừa quyền lợi của rank cũ.

Trong Java, để kế thừa một Object, các bạn dùng từ khóa extends đặt sau tên Class
ChEx7m0.png


Class ở đây có thể là Class ngoài hoặc Class con.
Như ở trên, Class TuDienTiengAnh kế thừa class TuDien. Vì thế khi mình tạo Object TuDienTiengAnh, nó cũng đồng thời là Object TuDien.
Bây giờ, TuDienTiengAnh của mình có thể truy cập các thành phần trong TuDien bao gồm: Non-static Method, Instance variable (là những thứ không có static)

Gv9pkqK.png


Giờ mình sẽ tạo hàm #doc để gọi hàm #docTuDien thuộc TuDien.
Mặc dù #docTuDien là Non-static Method nhưng mình không cần phải tạo thêm Object TuDien nữa (vì mình đã kế thừa nó rồi)

Gỉa sử khi không kế thừa:
YegA5YK.png

IDE sẽ báo lỗi :v Cách sửa đã nói ở bài trước: Khởi tạo thêm Object TuDien

Và ngoài Method, Field (biến/trường) cũng có khả năng làm điều này!
Ví dụ tiếp:
5co2rwi.png

Biến tuDien và hàm #docTuDien() đều thuộc TuDien. Mình có thể truy cập được vì đã kế thừa chúng từ TuDien.

Khi nào cần kế thừa?
Khi các bạn có nhiều loại Object có đặc điểm chung. Kế thừa giúp code bạn ngắn gọn hơn!
Ngoài ra còn làm được nhiều thứ khác (sẽ giải thích sau)

Khả năng mở rộng:
Khi đã kế thừa rồi, bạn vẫn có thể mở rộng Object hiện tại.
Với bức ảnh cuối, mình vẫn có thể thêm Instance variable/Non-static method/Inner class vào TuDienTiengAnh mà vẫn kế thừa từ TuDien!

Hết #9.
 
Similar content Most view Xem thêm
Back
Top Bottom