องค์ประกอบของ Java Object Model: Abstract Class, Interface

แนวคิดหลักของคลาสนามธรรมมีอยู่ในวิทยานิพนธ์ต่อไปนี้: บางครั้งอาจไม่จำเป็นต้องเรียนสำเร็จรูป แต่อยู่ในรูปแบบ "ดิบ" ไม่สามารถใช้ค่าที่ตั้งล่วงหน้าดังกล่าวได้โดยตรง (สร้างอินสแตนซ์)

คลาสนามธรรม java

คลาสนามธรรมใน Java คืออะไร

ลองดูตัวอย่างอื่นมีปฏิทินคลาสนามธรรมใน Java ในแพ็คเกจ Java.util ไม่ใช้ปฏิทินเฉพาะที่ใช้เช่นในยุโรปตะวันตกและยุโรปตะวันออกจีนเกาหลีเหนือไทยเป็นต้น แต่มีฟังก์ชันที่มีประโยชน์มากมายตัวอย่างเช่นการเพิ่มหลายวันในวันที่ที่ระบุ: ฟังก์ชันเหล่านี้คือ จำเป็นสำหรับการใช้งานปฏิทิน คุณไม่สามารถสร้างอินสแตนซ์จากคลาสนามธรรมได้

คลาสนามธรรมวิธี Java นามธรรม

สมมติว่าคุณต้องพัฒนากราฟิกหลาย ๆองค์ประกอบตัวอย่างเช่นรูปทรงเรขาคณิต: วงกลมสี่เหลี่ยมผืนผ้าดาว ฯลฯ และยังมีภาชนะที่ดึงมันออกมา แต่ละองค์ประกอบมีลักษณะที่แตกต่างกันดังนั้นวิธีการที่เกี่ยวข้อง (เรียกว่าการระบายสี) จึงถูกนำมาใช้แตกต่างกัน อย่างไรก็ตามแต่ละองค์ประกอบมีหลายสิ่งที่เหมือนกัน: รูปร่างจะต้องถูกจารึกไว้ในสี่เหลี่ยมผืนผ้าสามารถมีสีมองเห็นได้และมองไม่เห็น ฯลฯ นั่นคือคุณต้องสร้างคลาสพาเรนต์สำหรับรูปร่างเหล่านี้ทั้งหมดซึ่งแต่ละองค์ประกอบจะสืบทอดร่วมกัน คุณสมบัติ.

คลาสนามธรรมวิธี java นามธรรม
แต่วิธีการทาสีล่ะ?ท้ายที่สุดคลาสพาเรนต์ไม่มีการแสดงภาพ หากคุณประกาศวิธีการระบายสีในแต่ละคลาสแยกกันคุณจะต้องวิเคราะห์ว่าองค์ประกอบใดกำลังประมวลผลจากนั้นจึงทำการแปลงประเภท ดังนั้นจึงต้องประกาศเมธอดนามธรรมในคลาสพาเรนต์: ตั้งค่าเมธอดส่วนหัวโดยไม่มีเนื้อความ และร่างกายของแต่ละคลาสที่ได้รับจะอธิบายของมันเอง ใน Java คลาสนามธรรมสามารถรวมวิธีการที่เป็นนามธรรมได้

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

ตัวอย่าง:

  • AClass คลาสนามธรรม {
  • วิธีโมฆะนามธรรมสาธารณะ (int a);
  • }
  • คลาส BClass ขยาย AClass {
  • วิธีโมฆะสาธารณะ (int a) {
  • // ร่างกาย
  • }

อนุญาตให้ใช้ตัวแปรประเภทนามธรรมคลาสได้ พวกเขาสามารถอ้างถึงผู้สืบทอดที่ไม่ใช่นามธรรมของคลาสนี้หรือเป็นโมฆะ

อินเทอร์เฟซ Java - ทางเลือกสำหรับการสืบทอดหลายรายการ

อินเทอร์เฟซ java และคลาสนามธรรม

ไม่มีการสืบทอดหลายรายการใน Java เนื่องจากปัญหาบางอย่างเกิดขึ้น คลาสไม่สามารถสืบทอดจากหลายคลาสได้ แต่สามารถใช้งานได้หลายอินเทอร์เฟซ

อินเทอร์เฟซ Java และคลาสนามธรรม - แนวคิดคล้ายกัน แต่ไม่เหมือนกัน อินเทอร์เฟซสามารถประกาศเป็นสาธารณะจากนั้นทุกคนสามารถใช้งานได้หรือคุณสามารถละเว้นตัวปรับแต่งสาธารณะจากนั้นอินเทอร์เฟซจะพร้อมใช้งานภายในแพ็คเกจเท่านั้น ไม่จำเป็นต้องใช้คีย์เวิร์ดที่เป็นนามธรรมเนื่องจากอินเทอร์เฟซเป็นนามธรรมอยู่แล้ว แต่คุณสามารถระบุได้

การประกาศอินเทอร์เฟซ

ความแตกต่างระหว่างคลาสนามธรรมและอินเทอร์เฟซ java

เริ่มต้นด้วยชื่อและอาจไปก่อนคีย์เวิร์ดสาธารณะตามด้วยคำอินเทอร์เฟซ จากนั้นคำจะขยายและการแจงนับของอินเทอร์เฟซที่ได้รับการสืบทอดมา ไม่อนุญาตให้มีการทำซ้ำที่นี่และเป็นไปไม่ได้ที่ความสัมพันธ์ทางมรดกจะสร้างการพึ่งพาแบบวงกลม จากนั้นร่างกายของอินเทอร์เฟซที่อยู่ในวงเล็บปีกกาก็มาถึง มีการประกาศองค์ประกอบในเนื้อความของอินเทอร์เฟซ: ฟิลด์ค่าคงที่และวิธีนามธรรม ฟิลด์ทั้งหมดเป็นแบบคงที่สุดท้ายสาธารณะ - โมดิฟายเออร์เหล่านี้ทั้งหมดเป็นทางเลือก วิธีการทั้งหมดถือเป็นนามธรรมสาธารณะ - สามารถระบุตัวปรับแต่งเหล่านี้ได้ด้วย ตอนนี้มีการพูดถึงความแตกต่างระหว่างคลาสนามธรรมและอินเทอร์เฟซ Java เพียงพอแล้ว

  • อินเทอร์เฟซสาธารณะ AI ขยาย B, C, D {
  • // ร่างกาย
  • }

ในการประกาศคลาสเป็นการสืบทอดจากอินเทอร์เฟซให้ใช้คีย์เวิร์ด implements:

  • คลาส AClass ใช้ BI, CI, DI {}

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

อนุญาตให้ใช้ตัวแปรอินเทอร์เฟซได้เช่นกันพวกเขาสามารถอ้างถึงประเภทของคลาสที่ใช้อินเทอร์เฟซนี้หรือ null ตัวแปรดังกล่าวมีองค์ประกอบทั้งหมดของคลาส Object เนื่องจากอ็อบเจ็กต์ได้มาจากคลาสและในทางกลับกันตัวแปรเหล่านั้นจะได้รับการสืบทอดมาจากคลาสอ็อบเจ็กต์

ในบทความนี้เราได้ดูองค์ประกอบบางส่วนของโมเดลวัตถุ Java - คลาสนามธรรมวิธีนามธรรมอินเทอร์เฟซ