JavaRush /จาวาบล็อก /Random-TH /เหตุใดจึงต้องมีอินเทอร์เฟซ?
Павел
ระดับ

เหตุใดจึงต้องมีอินเทอร์เฟซ?

เผยแพร่ในกลุ่ม
เหตุใดจึงต้องมีอินเทอร์เฟซ? เหตุใดการสืบทอดอินเทอร์เฟซจึงมีความจำเป็น เหตุใดจึงจำเป็นต้องมีความหลากหลาย? สำหรับผู้ที่อ่านและเข้าใจวิธีสร้างอินเทอร์เฟซแต่ไม่เข้าใจว่าทำไม

ข้อจำกัดความรับผิดชอบ: ในบทความนี้และบทความต่อๆ ไป การตั้งชื่อคลาสและวิธีการจะเป็นภาษารัสเซีย

เมื่อพูดถึงหลักการของการเขียนโปรแกรมเชิงวัตถุ (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 เนื่องจากปัญหาใหญ่อาจเกิดขึ้นได้จากการสืบทอดหลายรายการ: พวกเขาเขียนรายละเอียดบน อินเทอร์เน็ต เหตุใดจึงต้องมีอินเทอร์เฟซ?  - 1เพื่อหลีกเลี่ยง "สิ่งที่เป็นไปไม่ได้" นี้ 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 ค่อนข้างเป็นไปได้ เหตุใดจึงต้องมีอินเทอร์เฟซ?  - 2ตอนนี้ความหมายของอินเทอร์เฟซควรชัดเจน - ใน Java คุณสามารถใช้การสืบทอดหลายรายการโดยใช้อินเทอร์เฟซ หากเราพัฒนาสถานการณ์ต่อไปเช่น: หลังจากนั้นพ่อและแม่อาจมีนิสัยที่พวกเขาไม่ได้ส่งต่อไปยัง PetyaและPetyaก็อาจมีนิสัยส่วนตัวของเขาเองด้วย คุณจะได้เรียนรู้วิธีการถ่ายโอนซานตาบาร์บาร่าที่สำคัญนี้ไปยังเครื่องบิน Java ในตอนต่อไปนี้ นี่ไม่ใช่ตัวอย่างเดียวสำหรับการทำความเข้าใจ Interfaces หากคุณยังไม่ได้อ่านบทความต่อไปนี้ โปรดอ่าน: Interfaces in Java (หากไม่เปิด คุณสามารถออกจากโปรไฟล์ของคุณหรืออ่านในโหมดไม่ระบุตัวตน) เหตุใดจึงจำเป็นต้องมีอินเทอร์เฟซใน Java - นำตัวอย่างทั้งหมดจากบทความไปใช้ที่นี่ และเปลี่ยนวิธีการทั้งในอินเทอร์เฟซและในคลาส: ชื่อของวิธีการ ลายเซ็นต์ (สิ่งที่วิธีการใช้เป็นอินพุต) ประเภทเอาต์พุตของวิธีการ ทำความเข้าใจด้วยตัวคุณเอง: - ความแตกต่างในการใช้อินเทอร์เฟซกับคลาสและคลาสนามธรรม - วิธีการเริ่มต้น
ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION