คลาสนามธรรมใน Java – พร้อมตัวอย่าง

เผยแพร่แล้ว: 2022-06-24

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

สารบัญ

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

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

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

กฎของคลาสนามธรรม

  • คลาสนามธรรมสามารถประกาศได้ภายในคำสำคัญที่เป็นนามธรรมเท่านั้น
  • มันสามารถมีได้ทั้งวิธีนามธรรมและไม่ใช่นามธรรม
  • ก็สามารถมีวิธีการขั้นสุดท้ายได้เช่นกัน
  • ไม่สามารถยกตัวอย่างได้
  • นอกจากนี้ยังสามารถใช้ตัวสร้างและวิธีการคงที่

ตัวอย่างของคลาสนามธรรม:

คลาสนามธรรม B{}

วิธีการเชิงนามธรรมใน Java

วิธีนี้สามารถใช้ได้เฉพาะในคลาสนามธรรมและไม่มีเนื้อหา ร่างกายจะถูกจัดเตรียมโดยคลาสย่อยที่สืบทอดมา

ตัวอย่างของวิธีการเชิงนามธรรมคือ:

นามธรรมเป็นโมฆะ printStatus (); // ไม่มีเนื้อหาวิธีการและนามธรรม

ตัวอย่างคลาส Java Abstract ด้วยวิธี Abstract

ในตัวอย่างต่อไปนี้ รถยนต์เป็นคลาสนามธรรมด้วยวิธีการแบบนามธรรมหนึ่งวิธี วิ่ง การใช้งานนั้นจัดทำโดยคลาส Audi

รถคลาสนามธรรม{

นามธรรมเป็นโมฆะรัน ();

}

คลาส Audi4 ขยายจักรยาน{

ถือเป็นโมฆะ run(){System.out.println("ทำงานได้ดี");}

โมฆะคงที่สาธารณะหลัก (สตริง args[]){

รถ obj = ใหม่ Audi4();

obj.run();

}

}

ผลลัพธ์ของโปรแกรมจะ "ทำงานได้ดี"

ในกรณีส่วนใหญ่ คลาสการใช้งานยังไม่ทราบ (data abstraction) และอ็อบเจ็กต์ของคลาสการนำไปใช้จะได้รับผ่านวิธีการของโรงงาน

วิธีการที่ส่งคืนอินสแตนซ์ของคลาสเรียกว่าวิธีการของโรงงาน

ตัวอย่าง Java Abstract Class ด้วย Factory Method

ในตัวอย่างต่อไปนี้ การสร้างอินสแตนซ์ของคลาสสแควร์ เมธอด draw() ของคลาส Square จะเริ่มต้นขึ้น

รูปร่างคลาสนามธรรม{

นามธรรมโมฆะวาด ();

}

//ในสถานการณ์จริง ผู้อื่นจัดเตรียมการนำไปใช้งาน เช่น ผู้ใช้ปลายทางไม่รู้จัก

คลาส Square ขยายรูปร่าง {

โมฆะวาด(){System.out.println("สี่เหลี่ยมจตุรัส");}

}

คลาส Circle1 ขยายรูปร่าง{

โมฆะวาด(){System.out.println("รูปหกเหลี่ยม");}

}

//ในสถานการณ์จริง โปรแกรมเมอร์หรือผู้ใช้เรียกเมธอด

คลาส TestAbstraction1{

โมฆะคงที่สาธารณะหลัก (สตริง args[]){

รูปร่าง s=new Circle1();//ในสถานการณ์จริง วัตถุถูกจัดเตรียมผ่านเมธอด เช่น เมธอด getShape()

s.draw();

}

}

ผลลัพธ์ของโปรแกรมข้างต้นจะเป็น "รูปหกเหลี่ยม"

หลักสูตรและบทความยอดนิยมเกี่ยวกับวิศวกรรมซอฟต์แวร์

โปรแกรมยอดนิยม
หลักสูตร Executive PG ในการพัฒนาซอฟต์แวร์ - IIIT B โปรแกรมใบรับรองบล็อคเชน - PURDUE โปรแกรมใบรับรองความปลอดภัยทางไซเบอร์ - PURDUE MSC ในวิทยาการคอมพิวเตอร์ - IIIT B
บทความยอดนิยมอื่น ๆ
Cloud Engineer เงินเดือนในสหรัฐอเมริกา 2021-22 เงินเดือนสถาปนิกโซลูชัน AWS ในสหรัฐอเมริกา เงินเดือนนักพัฒนาแบ็กเอนด์ในสหรัฐอเมริกา Front End Developer เงินเดือนในสหรัฐอเมริกา
นักพัฒนาเว็บ เงินเดือนในสหรัฐอเมริกา คำถามสัมภาษณ์ Scrum Master ในปี 2022 จะเริ่มอาชีพใน Cyber ​​​​Security ในปี 2022 ได้อย่างไร? ตัวเลือกอาชีพในสหรัฐอเมริกาสำหรับนักศึกษาวิศวกรรม

ควรใช้ Abstract Class ใน Java เมื่อใด

ด้านล่างนี้คือสถานการณ์บางส่วนที่สามารถใช้คลาสนามธรรมได้:

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

เมื่อใดควรใช้อินเทอร์เฟซใน Java สำหรับนามธรรม

สถานการณ์ต่อไปนี้ต้องการอินเทอร์เฟซ Java เพื่อให้เกิดนามธรรม:

  • เพื่อรองรับฟังก์ชั่นของการสืบทอดหลายรายการ
  • เพื่อให้ได้ข้อต่อหลวม

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

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

ตัวอย่าง Java Interface

ในตัวอย่างด้านล่าง อินเตอร์เฟสที่พิมพ์ได้มีเพียงหนึ่งเมธอดที่มีการนำไปใช้งานในคลาส A6

อินเทอร์เฟซที่พิมพ์ได้ {

พิมพ์เป็นโมฆะ ();

}

คลาส A6 ใช้พิมพ์ได้ {

พิมพ์โมฆะสาธารณะ(){System.out.println("ยินดีต้อนรับ");}

โมฆะคงที่สาธารณะหลัก (สตริง args[]){

A6 obj = ใหม่ A6();

obj.print();

}

}

ผลลัพธ์ของโปรแกรมจะเป็น

ยินดีต้อนรับ.

ตัวอย่างที่ 2:

อินเทอร์เฟซธนาคาร{

อัตราดอกเบี้ยลอยตัว ();

}

คลาส BOI ดำเนินการธนาคาร{

อัตราดอกเบี้ยลอยตัวสาธารณะ () {return 8.5f;}

}

คลาส CUB ดำเนินการธนาคาร{

อัตราดอกเบี้ยลอยตัวสาธารณะ (){return 9.2f;}

}

คลาส TestInterface2{

โมฆะคงที่สาธารณะหลัก (สตริง [] args){

ธนาคาร b=ใหม่ BOI();

System.out.println(“ROI: “+b.rateOfInterest());

}}

ผลลัพธ์ของโปรแกรมข้างต้นจะเป็น

ROI: 8.5

ข้อดีของนามธรรมใน Java

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

หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการสร้างนามธรรมของข้อมูลใน Java และการพัฒนาซอฟต์แวร์ ให้ลงทะเบียนใน Executive Post Graduate Program in Software Development ที่นำเสนอโดย IIIT Bangalore ร่วมกับ upGrad

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

เราจะมีคลาส abstract โดยไม่มีวิธี abstract ได้ไหม?

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

ทำไม data abstraction จึงจำเป็น?

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

data abstraction แตกต่างจาก control abstraction อย่างไร

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