เหตุใดจึงต้องมีอินเทอร์เฟซ? เหตุใดการสืบทอดอินเทอร์เฟซจึงมีความจำเป็น เหตุใดจึงจำเป็นต้องมีความหลากหลาย? สำหรับผู้ที่อ่านและเข้าใจวิธีสร้างอินเทอร์เฟซแต่ไม่เข้าใจว่าทำไม
เพื่อหลีกเลี่ยง "สิ่งที่เป็นไปไม่ได้" นี้ Java จึงมีอินเทอร์เฟซ และสำหรับนิสัย เราจะสร้างอินเทอร์เฟซของเราเองขึ้นมา แม้แต่สองคน: พวกมันจะมีลักษณะเช่นนี้:
ตอนนี้ความหมายของอินเทอร์เฟซควรชัดเจน - ใน Java คุณสามารถใช้การสืบทอดหลายรายการโดยใช้อินเทอร์เฟซ หากเราพัฒนาสถานการณ์ต่อไปเช่น: หลังจากนั้นพ่อและแม่อาจมีนิสัยที่พวกเขาไม่ได้ส่งต่อไปยัง PetyaและPetyaก็อาจมีนิสัยส่วนตัวของเขาเองด้วย คุณจะได้เรียนรู้วิธีการถ่ายโอนซานตาบาร์บาร่าที่สำคัญนี้ไปยังเครื่องบิน Java ในตอนต่อไปนี้ นี่ไม่ใช่ตัวอย่างเดียวสำหรับการทำความเข้าใจ Interfaces หากคุณยังไม่ได้อ่านบทความต่อไปนี้ โปรดอ่าน: Interfaces in Java (หากไม่เปิด คุณสามารถออกจากโปรไฟล์ของคุณหรืออ่านในโหมดไม่ระบุตัวตน) เหตุใดจึงจำเป็นต้องมีอินเทอร์เฟซใน Java - นำตัวอย่างทั้งหมดจากบทความไปใช้ที่นี่ และเปลี่ยนวิธีการทั้งในอินเทอร์เฟซและในคลาส: ชื่อของวิธีการ ลายเซ็นต์ (สิ่งที่วิธีการใช้เป็นอินพุต) ประเภทเอาต์พุตของวิธีการ ทำความเข้าใจด้วยตัวคุณเอง: - ความแตกต่างในการใช้อินเทอร์เฟซกับคลาสและคลาสนามธรรม - วิธีการเริ่มต้น
ข้อจำกัดความรับผิดชอบ: ในบทความนี้และบทความต่อๆ ไป การตั้งชื่อคลาสและวิธีการจะเป็นภาษารัสเซีย
เมื่อพูดถึงหลักการของการเขียนโปรแกรมเชิงวัตถุ (OOP): ความหลากหลาย การสืบทอด และการห่อหุ้ม การใช้การเปรียบเทียบในโลกแห่งความเป็นจริงจะเป็นประโยชน์ ข้อได้เปรียบที่สำคัญของ OOP คือเราสามารถจำลองส่วนหนึ่งของจักรวาลจริงในโปรแกรมได้ มาสร้างแบบจำลองครอบครัว Ivanov: พ่อ , แม่และ เด็กชายPetya . จากพ่อ Petyaสืบทอดนิสัยชอบพูดไม่ชัดเมื่อดื่มชา และจากแม่เขาสืบทอดนิสัยชอบเม้มปากขณะอ่านหนังสือ หากเราพยายามนำสถานการณ์นี้ไปใช้กับโปรแกรม เราจะได้สามคลาส:class Папа
class Мама
class Петя
พ่อและแม่ มีนิสัยที่ต้องส่งต่อให้พีท นิสัยคือการกระทำบางอย่าง - ดังนั้นจึงเป็นการดีที่สุดที่จะนำไปใช้ในโลกซอฟต์แวร์เป็นวิธีการ: Dad First :
class Папа {
public void прихлюпывать() {
System.out.println("Хлюп");
}
}
ตอนนี้แม่ :
class Мама {
public void поджимать() {
System.out.println("Поджать губки");
}
}
หากเรากำลังพูดถึงการสืบทอด ก็สมเหตุสมผลที่จะเขียนโค้ดดังนี้:
class Петя extends Папа, Мама {
@Override
public void прихлюпывать() {
System.out.println("Хлюп");
}
@Override
public void поджимать() {
System.out.println("Поджать губки");
}
}
นั่นคือการรับมรดกPetyaจากพ่อและแม่ไปพร้อม ๆ กัน หากคุณเขียนแบบนี้ คอมไพลเลอร์จะบ่น เนื่องจากใน Java คุณไม่สามารถรับมรดกหลายคลาสได้ อย่างไรก็ตาม เป็นไปได้ใน C++ แต่ไม่ใช่ใน Java เนื่องจากปัญหาใหญ่อาจเกิดขึ้นได้จากการสืบทอดหลายรายการ: พวกเขาเขียนรายละเอียดบน อินเทอร์เน็ต 
public interface ПривычкиПапы {
public void прихлюпывать();
}
public interface ПривычкиМамы {
public void поджимать();
}
ในอินเทอร์เฟซ เราอธิบายเฉพาะนิสัย แต่ไม่ได้อธิบายสิ่งที่พวกเขาทำโดยเฉพาะ เพราะเราจะเขียนการใช้งานเฉพาะในคลาส ก่อนอื่น เรามาทำความเข้าใจนิสัยทางกฎหมายของ พ่อและแม่ กันก่อน
class Папа implements ПривычкиПапы {
@Override
public void прихлюпывать() {
System.out.println("Хлюп");
}
}
class Мама implements ПривычкиМамы{
@Override
public void поджимать() {
System.out.println("Поджать губки");
}
}
และตอนนี้ การโอน นิสัยจากพ่อและแม่ไปยังพีทในเวลาเดียวกัน เป็นเรื่องถูกกฎหมายอย่างยิ่ง
class Петя implements ПривычкиПапы, ПривычкиМамы {
@Override
public void прихлюпывать() {
System.out.println("Хлюп");
}
@Override
public void поджимать() {
System.out.println("Поджать губки");
}
}
นั่นคือการใช้งานหลายครั้ง (มักเรียกว่าการใช้งาน) ใน Java ค่อนข้างเป็นไปได้ 
GO TO FULL VERSION