Một trụ cột cuối cùng của hy vọng sẽ ra đi.
Chúng ta đã nói về tính đóng gói, về tính trừu tượng và về tính kế thừa.
Và sau đó là câu thứ tư có một từ khá khó hiểu, đa hình.
Điều đó nghĩa là gì?
Chà, poly có nghĩa là nhiều và nhiều ism có nghĩa là tạo thành rất nhiều dạng.
Bây giờ chúng ta biết rằng các phương thức thuộc về các đối tượng, phải không?
Chúng tôi sử dụng từ khóa self để hành động trên đối tượng đã được khởi tạo.
Bây giờ trong Python, ý tưởng về tính đa hình này đề cập đến cách thức mà các lớp đối tượng có thể chia sẻ cùng một
tên phương thức.
Nhưng những tên phương thức đó có thể hoạt động khác nhau dựa trên những gì đối tượng gọi chúng.
Bây giờ, điều đó nghe có vẻ cực kỳ khó hiểu.
Vì vậy, chúng ta hãy nhìn vào một đoạn mã.
Chúng tôi có trình hướng dẫn người dùng và các lớp bắn cung.
Và như tôi đã đề cập với tính đa hình, các lớp đối tượng khác nhau có thể dùng chung tên phương thức.
Vì vậy, chúng tôi có một TAC ở đây được chia sẻ, nhưng mỗi cái làm một cái gì đó khác nhau dựa trên thuộc tính.
Ví dụ, khi tôi thực hiện một cuộc tấn công của Wizard.
Vì vậy, chúng ta hãy làm điều đó.
Thuật sĩ tấn công một chấm.
Nếu tôi nhấp vào chạy, tôi sẽ tấn công với sức mạnh 60 bởi vì Wizard cũng có ý nghĩa đặc biệt đối với cuộc tấn công của nó so
với Archer.
Chúng khác nhau.
Vì vậy, mặc dù chúng có chung tên phương thức vì đối tượng đang gọi nó, nhưng kết quả đầu ra
sẽ khác nhau.
Vì vậy, chúng tôi thực sự có thể làm điều gì đó khá thú vị ở đây.
Giả sử rằng tôi có Wizard một và sau đó chúng ta cũng sẽ có Archer một và Archer một sẽ là Robin.
Và Robin có 30 giờ bây giờ.
Những gì tôi có thể làm ở đây thực sự được gọi là chúng theo những cách khác nhau.
Ví dụ, tôi có thể tạo toàn bộ một chức năng mới được gọi là tấn công người chơi.
Và người chơi này tấn công một nhân vật.
Và ở đây chúng ta có thể nói ký tự, dấu chấm, tấn công.
Và bây giờ nếu tôi chạy mã này và nói.
Người chơi tấn công.
Thuật sĩ một.
Và tôi chạy cái này.
Tôi sẽ tấn công với sức mạnh của một.
Nếu tôi thực hiện cuộc tấn công của chúng tôi, hãy để Archer ở đây nếu tôi nhấp vào Chạy.
Bạn thấy rằng cùng một hàm cung cấp cho tôi một đầu ra khác, mặc dù chúng ta đang gọi cùng một thứ
vì đối tượng mà chúng ta truyền vào nó.
Tính đa hình.
Một cách khác để chứng minh điều này là nếu chúng ta thực hiện một vòng lặp for.
Nếu tôi làm vì giả sử nhân vật trong và hãy thêm Wizard một và Archer một và vào một danh sách.
Và nếu tôi in ở đây hoặc chúng ta hãy chạy tấn công dấu chấm ký tự.
Nếu tôi bấm chạy ở đây.
Một lần nữa, tôi có hai đầu ra khác nhau, mặc dù tôi đang gọi cùng một phương thức vì các đối tượng
khác nhau.
Và đây là một khái niệm thực sự mạnh mẽ, phải không?
Bởi vì chúng tôi có thể tùy chỉnh điều này theo nhu cầu cụ thể của mình, ngay cả khi, giả sử
rằng người dùng đã bị tấn công.
Phương pháp.
Và phương pháp tấn công mặc định này, giả sử là in, không làm gì cả vì nó chỉ là một người dùng.
Ngay cả khi tôi chạy những điều này và giả sử như trình hướng dẫn in.
Và giả sử tấn công dấu chấm nếu tôi nhấp vào Chạy.
Nó sẽ ghi đè bất cứ thứ gì mà cuộc tấn công ban đầu là vì chúng ta đã có phương thức đó trong lớp thuật sĩ của
mình.
Nhưng giả sử tôi muốn có cả người dùng và trình hướng dẫn chạy phương pháp tấn công.
Tôi có thể làm cái này như thế nào?
Hiện nay.
Đây là điều mà chúng ta sẽ khám phá thêm một chút trong video tiếp theo.
Nhưng hiện tại, tôi có thể nói là tấn công dấu chấm của người dùng.
Và tự cho nó.
Bởi vì tôi chấp nhận người dùng làm thông số của tôi ở đây.
Và sau đó tôi có thể chạy tấn công dấu chấm của người dùng.
Vì vậy, chúng ta hãy xem những gì xảy ra ở đây.
Nếu tôi bấm Chạy.
Tôi không làm gì cả và tấn công với sức mạnh 60.
Vì vậy, tính đa hình cho phép chúng ta có nhiều dạng.
Đó là khả năng xác định lại các phương thức cho các lớp dẫn xuất này là Wizard và Archer.
Và một đối tượng được khởi tạo có thể hoạt động ở các dạng khác nhau theo những cách khác nhau dựa trên tính đa hình.
Và điều này rất hữu ích vì chúng tôi có thể sửa đổi các lớp của mình theo nhu cầu cụ thể của chúng tôi.
Nhưng cũng không cần phải lặp lại chính mình trong trường hợp chúng ta muốn sử dụng một cái gì đó như tấn công từ người dùng
bên trong Wizard.
Vì vậy, bạn có nó.
Bốn trụ cột của sự đóng gói OP.
Tính trừu tượng.
Tính kế thừa và cuối cùng là tính đa hình.
Hiện nay.
Không có số lượng video hoặc sách sẽ dạy bạn chính xác khi nào nên sử dụng cái gì.
Tuy nhiên, ý tưởng ở đây là hiểu rằng những sức mạnh này tồn tại cùng với OP.
Bạn sẽ không bao giờ nói, Ồ, tôi cần triển khai tính đa hình.
Không, hầu hết thời gian bạn chỉ viết mã và sẽ xảy ra rằng bạn đang viết mã theo cách nhấn mạnh
tính đa hình.
Đây chỉ là sức mạnh của OP, mặc dù đây là những từ lớn.
Vào cuối ngày, chúng tôi đã học cách sử dụng chúng để cấu trúc mã của chúng tôi theo cách hiệu quả và
sạch sẽ.
Và đó là toàn bộ vấn đề.
Tất cả là về tổ chức mã của chúng tôi.
Bây giờ, một số bạn có thể đã hơi bối rối khi tôi tự tấn công người dùng này.
Trong video tiếp theo, tôi muốn khám phá điều này nhiều hơn một chút.
Tôi sẽ gặp bạn trong đó.