Abstract Class และ Abstract Method ใน Java คืออะไร? ฉันควรใช้เมื่อใด แนบการสอน

เผยแพร่แล้ว: 2019-09-12
java-abstract-class-tutorial-by-crunchify

เมื่อสองสามวันก่อน ฉันเขียนบทความเกี่ยวกับ Java Fundamental พื้นฐานเกี่ยวกับอินเทอร์เฟซใน Java คืออะไรและใช้งานอย่างไร บทช่วยสอนนี้เกี่ยวข้องกับ Java พื้นฐาน " Abstract Class and Abstract Method " ด้วย

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

มาเริ่มทำความเข้าใจคลาส Abstract กันก่อน แล้วเราจะมาดูตัวอย่างกัน

  • คลาสนามธรรม คือคลาสที่มีการประกาศ abstract
  • ไม่สามารถยกตัวอย่างคลาสนามธรรมได้
  • คลาสนามธรรมสามารถจัดคลาสย่อยได้
  • อาจรวมหรือไม่มีวิธีการที่เป็นนามธรรมก็ได้
  • เมื่อคลาสนามธรรมเป็น subclassed คลาสย่อยมักจะจัดเตรียมการใช้งานสำหรับเมธอด abstract ทั้งหมดในคลาสพาเรนต์
  • หากคลาสย่อยไม่ได้จัดเตรียมการนำไปใช้งาน คลาสย่อยนั้นจะต้องได้รับการประกาศให้ abstract ด้วย

นี่เป็น basic Java Interview Question อาจเป็น 1 st Java Interview Question ที่คุณได้รับระหว่างการสัมภาษณ์

ฉันสามารถกำหนดคลาสนามธรรมโดยไม่เพิ่มเมธอด abstract ได้หรือไม่

แน่นอนใช่. การประกาศ class abstract หมายความว่าคุณไม่อนุญาตให้สร้างอินสแตนซ์ของมันเอง คุณไม่สามารถมีวิธีนามธรรมในคลาสที่ไม่ใช่นามธรรมได้

วิธีการเชิงนามธรรมคืออะไร?

  • abstract method คือวิธีการที่ประกาศโดยไม่มีการนำไปใช้
  • มันก็แค่มีเมธอดซิกเนเจอร์

เริ่มต้นด้วยตัวอย่าง คำอธิบายปัญหา:

  1. สร้างคลาส CrunchifyExam.java ซึ่งมีวิธีการนามธรรมที่เรียกว่า checkResult()
  2. สร้างคลาส Crunchify1stSchoolExamResult.java ซึ่งขยายคลาสนามธรรม CrunchifyExam.java
  3. สร้างคลาส Crunchify2ndSchoolExamResult.java ซึ่งขยายคลาสนามธรรม CrunchifyExam.java
  4. ตอนนี้ทั้งสองคลาสข้างต้นต้องจัดเตรียมการใช้งานสำหรับเมธอด checkResult()
  5. ทั้งสองโรงเรียนอาจมี procedure หรือ number of checks ที่แตกต่างกันออกไป เพื่อดูว่าผู้ใช้ PASSED or FAILED พวกเขามีอิสระที่จะใช้ checkResult() ของตนเองได้

เมื่อคุณขยายคลาส CrunchifyExam ใน Crunchify1stSchoolExamResult.java - Eclipse จะแจ้งให้คุณใช้วิธีนามธรรมที่กล่าวถึงใน CrunchifyExam.java

ใช้วิธีการนามธรรม - สอนให้กระทืบ

Crunchify1 st SchoolExamResult.java

Crunchify2 nd SchoolExamResult.java

ผลลัพธ์ของคอนโซล Eclipse:

เพียงคลิกขวาที่ Crunchify2ndSchoolExamResult.java และเรียกใช้เป็น Java Application เพื่อดูผลลัพธ์ด้านล่าง

ตอนนี้คุณอาจมีคำถาม

เหตุใดฉันจึงใช้อินเทอร์เฟซที่นี่ไม่ได้แทนที่จะใช้ Abstract Method และ Class และมี CrunchifyExam เป็นอินเทอร์เฟซ

Sure you could แต่คุณยังต้องใช้ getExamTime (), setExamTime (), getExamTime (), setExamTime () ด้วย

ด้วยการใช้คลาสนามธรรม คุณสามารถสืบทอดการใช้งานเมธอดอื่น (ที่ไม่ใช่นามธรรม) ได้ คุณไม่สามารถทำได้ด้วยอินเทอร์เฟซ – อินเทอร์เฟซ cannot provide วิธีการใดๆ ได้

เป็นไปได้ไหมที่จะสร้างคลาสนามธรรมและคลาสสุดท้ายใน Java?

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

เป็นไปได้ไหมที่จะสืบทอดจากคลาสนามธรรมหลายคลาสใน Java?

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