ให้ฉันบอกแนวคิดพื้นฐานก่อน
ในภาษา Java คลาสนามธรรมและอินเทอร์เฟซเป็นกลไกสองอย่างที่สนับสนุนคำจำกัดความของคลาสนามธรรม มันเป็นเพราะการมีอยู่ของกลไกทั้งสองนี้ที่ Java ได้รับความสามารถเชิงวัตถุที่มีประสิทธิภาพ คลาสนามธรรมและอินเทอร์เฟซมีความคล้ายคลึงกันอย่างมากในการสนับสนุนคำจำกัดความของคลาสนามธรรมและยังสามารถแทนที่ด้วยกัน ดังนั้นนักพัฒนาหลายคนดูเหมือนจะมีตัวเลือกโดยพลการสำหรับคลาสนามธรรมและอินเทอร์เฟซเมื่อกำหนดคลาสนามธรรม ในความเป็นจริงยังมีความแตกต่างอย่างมากระหว่างทั้งสอง ทางเลือกของพวกเขายังสะท้อนให้เห็นว่าความเข้าใจในสาระสำคัญของพื้นที่ปัญหาและความเข้าใจในความตั้งใจในการออกแบบนั้นถูกต้องและสมเหตุสมผลหรือไม่
คลาสบทคัดย่อและอินเทอร์เฟซใช้ในภาษา Java เพื่อดำเนินการคลาสนามธรรม (คลาสนามธรรมในบทความนี้ไม่ได้แปลจากคลาสนามธรรมมันหมายถึงร่างกายนามธรรมและคลาสนามธรรมเป็นวิธีที่ใช้ในภาษา Java เพื่อกำหนดคลาสนามธรรมโปรดใส่ใจกับความแตกต่าง) คลาสนามธรรมคืออะไร? มีประโยชน์อะไรบ้างที่สามารถใช้คลาสนามธรรมที่นำมาให้เราได้?
ในแนวคิดเชิงวัตถุเรารู้ว่าวัตถุทั้งหมดถูกอธิบายโดยชั้นเรียน แต่วิธีอื่น ๆ นั้นไม่ได้เป็น ไม่ใช่ทุกคลาสที่ใช้เพื่ออธิบายวัตถุ (คลาสคอนกรีต) หากคลาสไม่มีข้อมูลเพียงพอที่จะอธิบายวัตถุคอนกรีตคลาสดังกล่าวเป็นคลาสนามธรรม คลาสนามธรรมมักใช้เพื่อแสดงแนวคิดนามธรรมที่เราได้รับในการวิเคราะห์และออกแบบพื้นที่ปัญหาและเป็นนามธรรมของชุดแนวคิดคอนกรีตที่ดูเหมือนแตกต่างกัน แต่ก็เหมือนกัน ตัวอย่างเช่น: หากเราพัฒนาซอฟต์แวร์การแก้ไขกราฟิกเราจะพบว่ามีแนวคิดเฉพาะเช่นแวดวงและรูปสามเหลี่ยมในเขตปัญหา พวกเขาแตกต่างกัน แต่พวกเขาทั้งหมดเป็นของแนวคิดของรูปร่าง แนวคิดของรูปร่างไม่ได้มีอยู่ในฟิลด์ปัญหา มันเป็นแนวคิดที่เป็นนามธรรม มันเป็นเพราะแนวคิดนามธรรมไม่มีแนวคิดคอนกรีตที่สอดคล้องกันในพื้นที่ปัญหาที่คลาสนามธรรมที่ใช้ในการแสดงแนวคิดนามธรรมไม่สามารถสร้างอินสแตนซ์ได้
ฟังก์ชั่นและอินเทอร์เฟซเสมือนมักใช้ในการพัฒนา Java อะไรคือความแตกต่างระหว่างสองสิ่งนี้?
บทคัดย่อ: คลาสหลักเดียวเท่านั้นที่สามารถสืบทอดได้ในคลาสย่อย
อินเทอร์เฟซ: คลาสย่อยสามารถใช้หลายอินเตอร์เฟส
ดังนั้นเมื่อใดควรใช้นามธรรมและเมื่อใดควรใช้อินเทอร์เฟซ?
เมื่อคลาสย่อยและคลาสหลักอยู่ในความสัมพันธ์เช่นเอเชียเป็นบุคคลจากนั้นคลาสย่อยของเอเชียสามารถสืบทอดคลาสพ่อแม่ของบุคคลได้
เมื่อคลาสย่อยและคลาสหลักเป็นเหมือนความสัมพันธ์ตัวอย่างเช่นซูเปอร์แมนในอเมริกาเป็นเหมือนซูเปอร์แมน ความสามารถของซูเปอร์แมนไม่ใช่ทุกคนดังนั้นพวกเขาจึงไม่ใช่คุณลักษณะทั้งหมด เราไม่สามารถให้ความสำคัญกับมหาอำนาจให้กับชั้นเรียนของมนุษย์ ในเวลานี้เราสามารถใช้อินเทอร์เฟซ
ตัวอย่างรหัส:
Public Public Class Man {Public นามธรรม Void Eat ();} Interface Public Superpower {Public Void Superpower ();} ชั้นเรียนสาธารณะ Asiaman ขยายผู้ชาย {@Overridepublic Void Eat () {System.out.println ("ชาวเอเชียกินด้วย Chopsticks"); {System.out.println ("American Superman สามารถบินได้");}@overridepublic void Eat () {system.out.println ("อเมริกันกินด้วยมีดและส้อม");}} โมฆะคงที่สาธารณะ Americansuperman (); anasiaman.eat (); anamericansuperman.eat (); anamericansuperman.superpower ();}ผลการทำงาน:
ชาวอเมริกันกินด้วยมีดและส้อมอเมริกันส้อมสามารถบินได้ในชาวเอเชียกินด้วยตะเกียบ
การใช้นามธรรมและอินเทอร์เฟซที่ถูกต้องมีประโยชน์ในการปรับปรุงความสามารถในการอ่านรหัส เมื่อผู้คนเห็นขยายพวกเขาจะรู้ว่าอะไร เมื่อพวกเขาเห็นการใช้งานพวกเขาสามารถรู้ว่าคุณลักษณะใดที่คลาสนี้มีเช่น