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