• Trong thời gian này, bạn không thể tạo bài mới, đăng comment, hay tạo tài nguyên mới để diễn đàn dọn dẹp nội dung.
    Diễn đàn sẽ sớm mở trở lại, chi tiết hãy theo dõi tại Discord
anhcraft

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

  • Người tạo chủ đề Người tạo chủ đề anhcraft
  • Ngày gửi Ngày gửi
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.
 
Nội dung tương tự Xem nhiều nhất Xem thêm

Thống kê nội dung

Tạo
anhcraft,
Trả lời
0
Lượt xem
235
Quay lại
Trên cùng