ในการใช้งานอินเทอร์เฟซ เราใช้ไวยากรณ์อินเทอร์เฟซเพื่อแยกอินเทอร์เฟซออกจากคำจำกัดความของคลาสและสร้างหัวเรื่อง อินเทอร์เฟซจัดเตรียมข้อกำหนดอินเทอร์เฟซสำหรับคลาส
ในการสืบทอด เราจะแนะนำกลไกการสืบทอดเพื่อปรับปรุงการนำโปรแกรมกลับมาใช้ใหม่ได้ มรดกในเวลานั้นขึ้นอยู่กับชั้นเรียน อินเทอร์เฟซอินเทอร์เฟซสามารถสืบทอดเพื่อขยายอินเทอร์เฟซดั้งเดิมได้
การสืบทอดอินเทอร์เฟซ
การสืบทอดอินเทอร์เฟซ (การสืบทอด) นั้นคล้ายคลึงกับการสืบทอดคลาสมาก ซึ่งก็คือการเพิ่มต้นแบบวิธีการอินเทอร์เฟซใหม่โดยยึดตามอินเทอร์เฟซที่สืบทอดมา ตัวอย่างเช่น เราใช้ Cup เป็นอินเทอร์เฟซดั้งเดิม:
คัดลอกรหัสรหัสดังต่อไปนี้:
อินเตอร์เฟสคัพ {
เป็นโมฆะ addWater (int w);
เป็นโมฆะเครื่องดื่มน้ำ (int w);
-
บนพื้นฐานของการสืบทอดถ้วย เราได้กำหนดอินเทอร์เฟซใหม่สำหรับถ้วยที่มีสเกล MetricCup
อินเทอร์เฟซมีดังนี้:
คัดลอกรหัสรหัสดังต่อไปนี้:
อินเทอร์เฟซ MetricCup ขยายถ้วย
-
int WaterContent ();
-
เราได้เพิ่มต้นแบบวิธีการใหม่ WaterContent() ซึ่งส่งคืนจำนวนเต็ม (ปริมาณน้ำ)
การสืบทอดอินเทอร์เฟซหลายรายการ
ในการสืบทอดคลาส Java คลาสที่ได้รับสามารถมีคลาสพื้นฐานได้เพียงคลาสเดียวเท่านั้น กล่าวอีกนัยหนึ่ง คลาสไม่สามารถสืบทอดจากคลาสมากกว่าหนึ่งคลาสในเวลาเดียวกันได้ ใน Java อินเทอร์เฟซสามารถสืบทอดได้มากกว่าหนึ่งอินเทอร์เฟซในเวลาเดียวกัน ซึ่งเรียกว่าการสืบทอดหลายรายการ
ตัวอย่างเช่น เรามีอินเทอร์เฟซผู้เล่นดังต่อไปนี้:
คัดลอกรหัสรหัสดังต่อไปนี้:
เครื่องเล่นอินเทอร์เฟซ
-
การเล่นเป็นโมฆะ();
-
เราเพิ่มอินเทอร์เฟซ MusicCup ใหม่ มีทั้งอินเทอร์เฟซ Cup และอินเทอร์เฟซ Player และเพิ่มต้นแบบวิธี display()
คัดลอกรหัสรหัสดังต่อไปนี้:
อินเทอร์เฟซ MusicCup ขยาย Cup, Player
-
จอแสดงผลเป็นโมฆะ();
-
(วิธีใช้อินเทอร์เฟซ ดูการนำอินเทอร์เฟซไปใช้)
คลาสนามธรรม
ในชีวิต เรามีแนวคิดที่เป็นนามธรรมบางอย่าง แนวคิดเชิงนามธรรมเหล่านี้มักเป็นกลุ่มของหลายคลาส เช่น:
1. ธัญพืช (อาจเป็นข้าวโพด ข้าวสาลี ข้าว)
2. กราฟิก (อาจเป็นรูปสามเหลี่ยม วงกลม สี่เหลี่ยม)
อีกตัวอย่างหนึ่ง เรายกตัวอย่างก่อนหน้านี้:
1. มนุษย์ (เป็นชายหรือหญิงก็ได้)
เมื่อจัดระเบียบความสัมพันธ์ดังกล่าว เราสามารถใช้การสืบทอด เช่น:
ตามสามัญสำนึกของเรา:
1. คำว่า “วัตถุประเภทอาหาร” ถือเป็นนามธรรม วัตถุดังกล่าวควรเป็นของคลาสย่อยข้าวโพด ข้าว และข้าวสาลี
2. คลาส Food มีเมธอด eat() (อาหารสามารถรับประทานได้) อย่างไรก็ตาม การกระทำดังกล่าวถือเป็นนามธรรม วิธีการรับประทานอาหารโดยเฉพาะจะแตกต่างกัน ตัวอย่างเช่น ข้าวโพดต้องปอกเปลือกและรับประทาน และข้าวสาลีต้องบดเป็นแป้ง เราจำเป็นต้องแทนที่เมธอด eat() ของคลาส Food ในทุกคลาส
นามธรรมและเป็นรูปธรรม
Java จัดให้มีไวยากรณ์ของคลาสนามธรรมเพื่อแสดงนามธรรมของคลาสและวิธีการของพวกเขา ตัวอย่างเช่น:
คัดลอกรหัสรหัสดังต่อไปนี้:
อาหารระดับนามธรรม {
โมฆะนามธรรมสาธารณะกิน ();
โมฆะสาธารณะ happyFood();
-
System.out.println("ดี! กินฉัน!");
-
-
วิธีการในคลาสสามารถประกาศเป็นนามธรรมได้ เช่น eat() ด้านบน ในเวลานี้เราไม่จำเป็นต้องกำหนดวิธีการโดยเฉพาะ เราเพียงแต่ต้องจัดเตรียมต้นแบบของวิธีการเท่านั้น สิ่งนี้คล้ายกับอินเทอร์เฟซ เมื่อเราสืบทอดคลาสนี้ในคลาส Corn เช่น เราต้องระบุคำจำกัดความเฉพาะของเมธอด eat()
อีกวิธีหนึ่งในคลาส happyFood() ไม่ใช่
เมื่อวิธี abstract ปรากฏในคลาส จะต้องเพิ่มคีย์เวิร์ด abstract ในการประกาศของคลาสนี้ มิฉะนั้น Java จะรายงานข้อผิดพลาด ไม่สามารถใช้คลาสนามธรรมเพื่อสร้างวัตถุได้
การสืบทอดคลาสนามธรรม
เราสามารถสืบทอดคลาสนามธรรมได้เช่นเดียวกับคลาส เราต้องใช้คำจำกัดความของวิธีการที่สมบูรณ์เพื่อครอบคลุมวิธีการเชิงนามธรรมในคลาสนามธรรม มิฉะนั้น คลาสที่ได้รับยังคงเป็นคลาสนามธรรม
คลาสนามธรรมสามารถมีสมาชิกข้อมูลในคำจำกัดความได้ การสืบทอดข้อมูลสมาชิกจะเหมือนกับคลาสปกติ
สรุป
การสืบทอดอินเทอร์เฟซการสืบทอดหลายรายการ
วิธีนามธรรม คลาสนามธรรม