มาพูดถึงการสืบทอดหลายรายการ ซึ่งคุณสามารถทำได้ใน Python
ตอนนี้ จำไว้ว่า เรามีตัวช่วยสร้างผู้ใช้และคลาสนักธนูของเรา
เรากำลังพยายามสร้างเกมนั้นอยู่ในขณะนี้
มาทำความสะอาดโค้ดนี้กัน
เราไม่ต้องการฟังก์ชัน init อีกต่อไป
เราจะมีผู้ใช้ที่นี่
เรามีวิซาร์ดที่สืบทอดมาจากผู้ใช้และนักธนูที่สืบทอดมาจากผู้ใช้
แต่จะเกิดอะไรขึ้นถ้าเราต้องการสร้างตัวละครใหม่และตัวละครนี้เรียกว่าคลาส
เรียกว่าไฮบริดบอร์กหรือเราชื่อ
ฉันรู้.
แต่นี่คือสิ่งที่
Hybrid Borg เป็นตัวละครประเภทพิเศษเพราะมีพลังที่พ่อมดมีซึ่งก็คือการโจมตี
มันมีพลังที่นักธนูมี ซึ่งก็คือลูกธนูของเช็ก
และเพื่อความสนุก เรามาแสดงโฆษณาที่นี่กัน
และเราจะบอกว่าสี่วิ่งเร็วจริงๆ
ไม่เป็นไร.
ดังนั้นเราจึงต้องการให้ Borg ลูกผสมนี้มีวิธีการเหล่านี้ทั้งหมด
เราสามารถทำได้หรือไม่?
เราก็ทำได้
สิ่งที่เราต้องทำคือพูดว่า Wizard แล้วก็ Archer
เราสามารถให้พารามิเตอร์ได้มากเท่าที่เราต้องการ
เราได้รับมรดกหลายอย่างจากพ่อมดและนักธนู
ในที่นี้ สมมุติว่าฉันไม่ทำอะไรเลย และฉันจะผ่านเข้าไป
ถ้าฉันยกตัวอย่าง สมมุติว่า Borg ลูกผสม
หนึ่งกำลังจะเป็นไฮบริด
คลาส Borg ยกตัวอย่างมัน
ตอนนี้ฉันสามารถใช้สิ่งเหล่านี้ได้ทั้งหมด
ลองตรวจสอบพวกเขา
สมมติว่าพิมพ์ HP one dot run
ฉันทำอย่างนั้นได้ไหม
และอีกครั้ง สะกดผิดเล็กน้อย
ตรวจสอบให้แน่ใจว่าเป็นไฮบริดไฮบริด Borg ไม่ใช่บอร์ดไฮบริด
ฉันหวังว่าคุณจะไม่เบื่อวิดีโอนี้
ตกลง ฉันได้รับข้อผิดพลาด
ไม่มีอาร์กิวเมนต์ตำแหน่งที่จำเป็นสองรายการ
ชื่อและอำนาจ
ได้เลย เพราะ
เราต้องผ่านสิ่งเหล่านี้เข้าไป
ถูกต้อง.
ยอมรับพารามิเตอร์เหล่านี้
ตกลง.
สมมุติว่าเราอยากได้ชื่อ
Borghi และพลังที่จะเป็น 50 ถ้าฉันเรียกใช้สิ่งนี้
ไม่เป็นไร.
ดูเหมือนรันจะเร็วจริงๆ
งานวิ่ง.
ฉันได้รับมรดกจากอาร์เชอร์
แล้วลูกธนูของเช็กล่ะ?
ถ้าฉันคลิกเรียกใช้
โอ้.
ผมได้รถไฮบริด
วัตถุไม่มีลูกศรแอตทริบิวต์
ตอนนี้.
ทำไมถึงเป็นอย่างนั้น?
เพราะในทางเทคนิคแล้วเรา
สืบทอดมาจากวิซาร์ดก่อน จากนั้นอาร์เชอร์และวิซาร์ดก็ยอมรับ
ชื่อและอำนาจ
แต่เราไม่เคยให้ลูกธนู ชื่อ และลูกธนู
อืม.
แล้วเราจะแก้ปัญหานั้นได้อย่างไร?
มาลองกัน
สมมติว่าเราเพิ่มลูกศรที่นี่
100 กับงานนี้
อืม.
นั่นไม่ได้ผลใช่ไหม
และนี่เป็นเรื่องที่ยุ่งยากกับการสืบทอดหลายรายการ และเหตุใดภาษาโปรแกรมบางภาษาจึงไม่อนุญาตให้มีการสืบทอดหลายรายการ
สิ่งต่างๆ อาจดูยุ่งยากเล็กน้อย เพราะในหัวของคุณ คุณต้องแน่ใจว่าคุณเข้าใจวิธีใช้งานคลาสเหล่านี้
และตรวจสอบให้แน่ใจว่าเราจะไม่เขียนทับสิ่งใดๆ
ในกรณีของเรา เราสามารถซับซ้อนโค้ดของเราได้เล็กน้อย
แล้วเรามาทำอะไรที่นี่?
ในนี้ฉันอาจจะทำอะไรแบบนี้ก็ได้
ฉันสามารถพูดได้ชัดเจนในนั้น
นี้รับเอง.
มันจะได้รับชื่อพลัง
และนอกจากนี้ยังมี.
ลูกศร
และสุดท้ายที่นี่ ฉันสามารถพูดได้ว่าเราจะเรียกอาร์เชอร์ด้วย
จุดในนั้น
และนั่นกำลังจะขายออกแล้วส่งต่อในชื่อ
และลูกศร
เพื่อที่ว่าถ้าฉันเรียกใช้สิ่งนี้
มาเพิ่มลูกศร 100 กันที่นี่แล้วฉันคลิกเรียกใช้
ไปเลย
ลูกศรกำลังทำงานอยู่
ตอนนี้เพียงเพื่อตรวจสอบว่าการโจมตีวิซาร์ดของเราทำงานเช่นกัน
ถ้าเราทำการโจมตี
และคลิกเรียกใช้
โอ้เด็ก.
ตอนนี้วัตถุไฮบริดของเราไม่มีกำลัง
อีกครั้ง เพื่อให้เรามีพลัง เราจะต้องคัดลอกสิ่งนี้และสมมุติว่าคราวนี้ตัวช่วยสร้างในตัวมันเองแล้วจึงให้พลังแก่มัน
ถ้าฉันคลิกเรียกใช้
ไม่เป็นไร.
การโจมตีทำงาน
ลองกลับไปตรวจสอบ Aero
ตรวจสอบให้แน่ใจว่าเราไม่ได้ทำอะไรเสียหาย
ถ้าฉันคลิกนั่นก็ใช้ได้เช่นกัน
และสุดท้ายแล้วการลงชื่อเข้าใช้ล่ะ
อืม เข้าระบบงาน
เข้าสู่ระบบ.
ไม่เป็นไร.
โอ้เด็ก.
นั่นเป็นจำนวนมาก
และมีสองสามวิธีในการแก้ปัญหานี้จริงๆ
สิ่งที่ฉันอยากจะแสดงให้คุณเห็นก็คือ เมื่อคุณทำการสืบทอดหลาย ๆ อย่าง สิ่งต่าง ๆ อาจซับซ้อนได้
และแม้ว่าเราจะดำเนินการทีละขั้นตอน ลองนึกภาพว่ามีผู้เขียนโค้ดที่เข้าร่วมทีมของคุณในที่ทำงานและพยายามทำความเข้าใจโค้ดนี้หรือไม่
เราได้เพิ่มตรรกะเข้าไปเล็กน้อย และสิ่งต่างๆ ก็เริ่มซับซ้อนขึ้นเรื่อยๆ และยากที่จะติดตามทุกสิ่งในหัวของคุณ
และนี่คือเหตุผลที่การสืบทอดหลายต่อหลายครั้งเป็นหนึ่งในสิ่งที่ทรงพลังจริงๆ แต่ด้วยพลังอันยิ่งใหญ่มาพร้อมความรับผิดชอบที่ยิ่งใหญ่
เพราะเรากำลังสร้างความซับซ้อนมากขึ้นเรื่อยๆ
อีกครั้ง เหตุผลส่วนหนึ่งที่ภาษาโปรแกรมบางภาษาไม่อนุญาตให้คุณทำการสืบทอดหลายรายการ
อีกอย่าง ฉันคงทำให้คุณงงมากขึ้นไปอีก
และในวิดีโอหน้า เราจะพูดถึงสิ่งที่เรียกว่า Maro
และนี่จะเป็นอีกตัวอย่างที่ดีว่าทำไมคุณถึงต้องระมัดระวังเรื่องมรดกหลายอย่าง
เจอกันในนั้นครับ
ลาก่อน.