- 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é
(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
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)
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:
IDE sẽ báo lỗi
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:
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.
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é
(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
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)
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:
IDE sẽ báo lỗi
Cách sửa đã nói ở bài trước: Khởi tạo thêm Object TuDienVà ngoài Method, Field (biến/trường) cũng có khả năng làm điều này!
Ví dụ tiếp:
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.
