‫ในบทนี้ คุณจะได้เรียนรู้ความแตกต่างที่สำคัญระหว่างคลาสนามธรรมและอินเทอร์เฟซ
‫เมื่อออกแบบแอปพลิเคชัน จำเป็นต้องรู้ว่าเมื่อใดควรใช้คลาสนามธรรม เมื่อใดควรใช้อินเทอร์เฟซ
‫และเมื่อใดควรใช้ทั้งสองอย่าง
‫คลาสนามธรรมและอินเทอร์เฟซอาจดูคล้ายกันในบางวิธี แต่มีข้อแตกต่างที่สำคัญซึ่งจะเป็นตัวกำหนดว่าตัวเลือกใดดีที่สุดสำหรับสิ่งที่คุณพยายามทำให้สำเร็จ
‫การทำความเข้าใจความแตกต่างระหว่างคลาสนามธรรมและอินเทอร์เฟซมีความสำคัญมาก ดังนั้นเราจึงสามารถออกแบบแอปพลิเคชันที่เชื่อมต่อกันอย่างหลวม
‫ๆ และขยายได้ ดังนั้นแอปพลิเคชันที่เราสามารถแก้ไขและเปลี่ยนแปลงได้อย่างง่ายดายโดยไม่ทำลายทุกอย่าง
‫เราจะหารือเกี่ยวกับความแตกต่างเหล่านั้นและวิธีตัดสินใจว่าจะใช้สิ่งใดในวิดีโอนี้
‫แต่ก่อนที่เราจะทำอย่างนั้น อันดับแรก เรามารีเฟรชหน่วยความจำของเราเกี่ยวกับคลาสนามธรรมและอินเทอร์เฟซกัน
‫อย่างแรกเลย คลาสนามธรรม
‫คลาสนามธรรมเป็นคลาสที่ไม่สมบูรณ์หรือคลาสที่ไม่สามารถสร้างอินสแตนซ์ได้ ซึ่งหมายความว่าเราไม่สามารถสร้างวัตถุจากคลาสนั้นได้
‫จุดประสงค์ของคลาสนามธรรมคือการจัดเตรียมพิมพ์เขียวสำหรับคลาสที่ได้รับและเพื่อกำหนดกฎบางอย่างเช่นสิ่งที่คลาสที่ได้รับจะต้องนำไปใช้
‫แต่ทำไมเราถึงต้องการให้คลาสถูกทำเครื่องหมายเป็นคลาสนามธรรมเพื่อเริ่มต้น
‫มีอะไรผิดปกติกับชั้นเรียนปกติ?
‫ลองนึกภาพว่าเรามีรถจักรยานยนต์ระดับหนึ่งและรถยนต์ระดับเดียวกัน และใช้ฟังก์ชันการทำงานบางอย่างร่วมกันเพื่อลดความซ้ำซ้อนของรหัส
‫เราสร้างคลาสพื้นฐานที่เรียกว่ารถเพื่อป้องกันการสร้างอินสแตนซ์ของประเภทยานพาหนะและบังคับใช้ทุกวิธีในการปรับใช้รุ่นของวิธีการของยานพาหนะ
‫เราต้องทำเครื่องหมายว่าเป็นคลาสนามธรรม
‫เราสามารถใช้ประโยชน์จากคลาสนามธรรมเพื่อออกแบบส่วนประกอบและระบุระดับของการทำงานทั่วไปที่ต้องดำเนินการโดยคลาสที่ได้รับ
‫เรามาทำให้รถคันนี้เป็นนามธรรมกันเถอะ
‫ทีนี้มาดูอินเทอร์เฟซกันอีกครั้ง
‫ดังนั้นอินเทอร์เฟซจึงเป็นสัญญาและสามารถมีได้เฉพาะการประกาศเมธอด
‫ไม่สามารถมีคำจำกัดความของวิธีการ
‫พวกเขากำหนดความสามารถที่ชั้นเรียนมี
‫ลองนึกภาพว่าเรามีสามชั้นเรียน จึงมีชั้นเรียน จักรยาน รถจักรยานยนต์ และรถยนต์
‫แล้วเราต้องการให้แน่ใจว่าคลาสทั้งหมดเหล่านี้สืบทอดมาจากรถคลาสนี้
‫และถ้าคุณต้องการเพิ่มฟังก์ชันการขับขี่ด้วยตนเองให้กับรถของเรา ตัวอย่างเช่น และเราต้องการให้คุณสร้างคลาสอื่นๆ
‫เช่น ที่อาจสร้างบางอย่างเช่นเครื่องบิน การเพิ่มฟังก์ชันการขับขี่ด้วยตนเองลงใน รถคลาสพื้นฐานเพราะคลาสย่อยของเราบางรุ่นเท่านั้นที่จะมีคุณสมบัตินี้
‫จะสะดวกกว่าถ้าเพิ่มในรูปแบบของอินเทอร์เฟซที่เรียกว่าฉันขับเอง
‫จากนั้นคลาสเหล่านี้ที่ใช้อินเทอร์เฟซนี้สามารถให้ตรรกะเพื่อให้บรรลุ
‫ตอนนี้เรามาพูดถึงความคล้ายคลึงกันระหว่างอินเทอร์เฟซและคลาสนามธรรม
‫ทั้งอินเทอร์เฟซและคลาสนามธรรมสามารถสร้างอินสแตนซ์ได้
‫หมายความว่าเราไม่สามารถสร้างวัตถุจากวัตถุเหล่านี้ได้ แต่ทั้งสองสนับสนุนความหลากหลาย ซึ่งหมายความว่าเราสามารถเก็บวัตถุประเภท
‫cat ไว้ในตัวแปรประเภทสัตว์นามธรรมประเภทนามธรรมได้
‫เช่นเดียวกับอินเทอร์เฟซที่เราสามารถจัดเก็บคอลเลกชันใด ๆ เช่นรายการหรือสแต็กในตัวแปรประเภท
‫i ที่นับได้
‫ทีนี้มาดูความแตกต่างที่สำคัญกัน
‫คลาสนามธรรมได้รับการออกแบบให้สืบทอดโดยคลาสย่อยที่ใช้หรือแทนที่เมธอด
‫กล่าวอีกนัยหนึ่ง คลาสนามธรรมมีการใช้งานบางส่วนหรือไม่ได้ใช้งานเลย
‫ในทางกลับกัน อินเทอร์เฟซไม่ได้ใช้งานเลย
‫จากนั้นคลาสนามธรรมจะไม่มีคอนสตรัคเตอร์ตรงข้ามกับสิ่งนั้น
‫คลาสนามธรรมสามารถมีตัวสร้างและฟิลด์ตลอดจนคำจำกัดความของเมธอด และการใช้งานจะเป็นความรับผิดชอบของคลาสที่ใช้อินเทอร์เฟซ
‫ในทางกลับกัน คลาสนามธรรมอาจมีเมธอด คำจำกัดความ และฟิลด์ และเนื่องจากอินเทอร์เฟซไม่มีคอนสตรัคเตอร์ใดๆ
‫ดังที่เราได้กล่าวไปแล้ว พวกมันจึงไม่สามารถมีฟิลด์ได้
‫ดังนั้นตอนนี้คลาสสามารถใช้อินเทอร์เฟซจำนวนมากได้ ซึ่งเป็นวิธีการบรรลุการสืบทอดหลายแบบ เนื่องจาก C-sharp
‫เป็นภาษาที่สืบทอดเพียงภาษาเดียวและไม่อนุญาตโดยค่าเริ่มต้น
‫ดังนั้นคลาสจึงสามารถสืบทอดขอบเขตได้เพียงคลาสเดียวเท่านั้น
‫ดังนั้นหากคลาสใช้อินเตอร์เฟส คลาสนั้นจะต้องใช้งานสมาชิกทั้งหมด เช่น คุณสมบัติ
‫เมธอด และอื่นๆ
‫ในทางกลับกัน เมื่อคลาสขยายคลาสที่เป็นนามธรรม คลาสนั้นจะต้องใช้สมาชิกที่เป็นนามธรรมเท่านั้น
‫ดังนั้นส่วนที่ไม่ได้ใช้งานของคลาสนามธรรม
‫ลองดูการเปรียบเทียบที่นี่
‫ลองนึกภาพฉันเห็นผู้สอนที่เฉียบแหลมในบทช่วยสอนของสหภาพยุโรปที่ผู้สอนไม่สามารถบรรลุสิ่งใดได้เว้นแต่เขาจะเป็นผู้เชี่ยวชาญในหัวข้อหรือเธอเป็นผู้เชี่ยวชาญในหัวข้อนั้นเพราะเราไม่สามารถมีชั้นเรียนที่เป็นนามธรรมได้
‫ดังนั้นผู้สอนจะต้องเป็นผู้เชี่ยวชาญในหัวข้อที่จะสอน
‫ดังนั้นผู้สอนจึงกลายเป็นผู้เชี่ยวชาญที่เฉียบแหลม และตอนนี้เขาหรือเธอสามารถสอน C-sharp ได้
‫เมื่อถึงจุดหนึ่ง ผู้สอนร้าน C ต้องตัดต่อวิดีโอของเขา
‫แม้ว่าผู้สอนไม่จำเป็นต้องทำสิ่งเดียวกันทั้งหมด
‫ดังนั้นเราจึงใช้โปรแกรมตัดต่อวิดีโออินเทอร์เฟซ I เพื่อให้ใช้งานได้ ผู้สอนอาจไม่จำเป็นต้องแก้ไขทุกคน
‫แต่ผู้สอนที่ใช้โปรแกรมตัดต่อวิดีโอนี้จะต้องทำเช่นนั้น
‫ไม่เป็นไร.
‫คุณควรเลือกการสืบทอดผ่านอินเทอร์เฟซเมื่อออกแบบไลบรารีคลาสร้านค้าหรือไม่
‫ใช้คลาสนามธรรมถ้าคุณมีฟังก์ชันบางอย่างที่คุณต้องการให้คลาสย่อยมี
‫ตัวอย่างเช่น หากคุณมีชุดของฟังก์ชัน คุณต้องการให้คลาสย่อยใส่ไว้ในคลาสนามธรรม
‫คลาสนามธรรมจะใช้เมื่อคลาสที่ได้รับมาแบ่งปันคุณสมบัติหลักและพฤติกรรมของคลาสนามธรรม ซึ่งเป็นประเภทของพฤติกรรมที่กำหนดคลาสจริง
‫ใช้อินเทอร์เฟซหากคุณต้องการให้สัญญาทั่วไปมีการทำงานหรือฟังก์ชันการทำงานเท่านั้น
‫อินเทอร์เฟซมักจะหลวมเมื่อเทียบกับคลาสนามธรรม
‫คุณคงไม่อยากใช้อินเทอร์เฟซในสถานการณ์ที่คุณเขียนโค้ดเดียวกันอย่างต่อเนื่องสำหรับวิธีอินเทอร์เฟซทั้งหมด
‫ใช้คลาสนามธรรมและกำหนดแต่ละวิธีเพียงครั้งเดียว
‫สรุปด่วนเลย
‫เมื่อเราพูดถึงคลาสนามธรรม เรากำหนดลักษณะของประเภทอ็อบเจ็กต์ที่ระบุว่าอ็อบเจกต์คืออะไร
‫เมื่อเราพูดถึงอินเทอร์เฟซและกำหนดความสามารถที่เราสัญญาว่าจะจัดหา เรากำลังพูดถึงการสร้างสัญญาเกี่ยวกับสิ่งที่อ็อบเจกต์สามารถทำได้
‫ดังนั้นสิ่งที่วัตถุเป็นคลาสนามธรรม
‫สิ่งที่วัตถุสามารถทำได้
‫อินเทอร์เฟซ
‫ไม่เป็นไร.
‫ดังนั้น ฉันหวังว่าคุณจะเพลิดเพลินและเข้าใจบทสรุปนี้และภาพรวมของแนวทางทั้งสองประเภทที่แตกต่างกัน
‫และตอนนี้ มาลองใช้แนวคิดเหล่านั้นในตัวอย่างต่างๆ กันตลอดการบรรยายครั้งถัดไปและตลอดหลักสูตรที่เหลือ