01/10/2018, 17:13
Tính đa hình trong Java được sử dụng trong công việc như thế nào?
Em chào các anh,em đang học đến phần Tính Đa Hình trong Java ,Có một điều em thắc mắc là tính đa hình này được áp đụng vào công việc sau này ntn ạ,e vẫn chưa hiểu công dụng của nó cho lắm .Mong các anh giải đáp thắc mắc cho em ạ.Em xin cảm ơn
Bài liên quan
Có phải bạn thắc mắc như này không ? Ví dụ ta có 1 Class
Shape
là class cha và 2 ClassHinhTamGiac, HinhVuong
là class con như sau:Có phải nó rất dài không, tại sao lại phải viết thêm Class cha mà sao không viết hẳn luôn 2 class con ra ? Nhưng nếu bây giờ ta có một Class
Controller
nữa:Nếu trong trường hợp này, bạn viết riêng 2 Class con ra thì tức là bạn sẽ phải viết từng
void printInfo
cho từng Class cụ thể. Đồng thời cùng phải tạo ra hai Array riêng để chứa từng loại ==> Quá dài dòng và phức tạp đúng không ?? Điều này rất bất tiện, mỗi khi có kiểuShape
mới bạn lại phải vào sửa, thêm phương thức trongController.java
==> Mất thời gianTính đa hình giúp cho các Class chỉ cần quan tâm đến đối tượng mình đang làm việc có thể làm được gì, chứ không quan tâm đó là cái gì Đây là một đặc điểm của OOP
Hy vọng giúp bạn hiểu được tác dụng của tính đa hình
em cảm ơn anh nhiều,…
Nói theo cách đơn giản tính đa hình là cùng tên 1 phương thức nhưng tùy theo kiểu trả về hoặc số lượng tham số hoặc kiểu tham số sẽ cho ra các kết quả các khau.
Ví dụ:
HienThi(“Hello world”) => Kết quả: Hiển thị chuỗi “Hello world” ra màn hình
HienThi(“Hello world”, 10) => Kết quả: Hiển thị chuỗi “Hello world” ra màn hình trong vòng 10 giây.
HienThi(“Hello world”, 10,…v…v)…
Nó làm đơn giản hóa cách mà người dùng thao tác với đối tượng.
Có thể thay thế tính đa hình bằng cách đặt giá trị mặc định cho tham số và xử lý các kiểu theo từng cách khác nhau. Nhưng cách này không khuyến khích vì quá nhiều code trong một phương thức khó bảo trì và quản lý sau này.
Mình thấy ví dụ và giải thích hơi khó hiểu.
Kết luận thì oke =))
Dễ hiểu mà, đúng bản chất của tính đa hình đó
Đa hình trong Java hiểu đơn giản tạo một abstract class hay interface để tạo phần khung (base). Các class muốn dựa vào khung đó chỉ cần extends abstract class / implement interface rồi override lại abstract method theo ý muốn
VD như việc vẽ hình (base), ta có nhiều hình (hình chữ nhật, tam giác, tròn,…) Thay vì tạo một đống class
HinhChuNhat
,HinhTamGiac
,HinhTron
với các methodtinhChuVi()
,veHinh()
rồi copy, sửa lại method, có thể sai sót như sai cấu trúc, không dùng được Generic để tạo List các hình (Hình Chữ Nhật, Hình Tròn, Hình Tam Giác chung vào list Hình chẳng hạn) . Tính đa hình sẽ giúp hạn chế sai sót, sử dụng được Generic để tạo list có chung 1 kiểuMục đích chính là để tạo sự mềm dẻo trong chương trình, hạn chế duplicate code, tạo sự thống nhất trong code, nhất là khi teamwork, không có các base class rất dễ sai sót, bug không mong muốn
Hồi xưa anh học Java hay duplicate code lắm, từ ngày đi làm mới hiểu được tính đa hình nó áp dụng nhiều lắm, project nào cũng đòi phải xử lý Generic cả
Cái này là định nghĩa overload cơ mà