"สวัสดี Amigo เมื่อวานคุณเรียนแบบนามธรรม ตอนนี้ได้เวลาเพิ่มพูนความรู้ของเราแล้ว ฉันต้องการสอนวิธีใช้คลาสนามธรรมอย่างถูกต้อง"

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

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

"นั่นง่ายพอ"

แต่อาจมีการเปรียบเทียบที่เป็นนามธรรมมากกว่านั้น เหมือนกับส่วนต่อประสานที่มีวิธีการนำไปใช้เล็กน้อย ตัวอย่างเช่น พิจารณาล่ามมืออาชีพ เรามี « ตัวแปลนามธรรม » โดยไม่ต้องระบุภาษาต้นทางและเป้าหมาย หรือพิจารณาผู้คุ้มกัน เราอาจรู้ว่าเขาเชี่ยวชาญศิลปะการต่อสู้และสามารถปกป้องลูกค้าของเขาได้ แต่ศิลปะการต่อสู้ใดและวิธีที่เขาจะปกป้องลูกค้าคือ "รายละเอียดการใช้งาน" ของผู้คุ้มกันเฉพาะแต่ละคน

ลองดูตัวอย่าง:

รหัสจาวา คำอธิบาย
abstract class BodyGuard
{
 abstract void applyMartialArts(Attacker attacker);

 void shoot(Attacker attacker)
 {
    gun.shoot(attacker);
 }

 void saveClientLife(Attacker attacker)
 {
  if (attacker.hasGun())
     shoot(attacker);
  else
     applyMartialArts(attacker);
 }
}
คลาส BodyGuard กำหนดวิธีจัดการกับการโจมตี: ยิงหรือใช้ศิลปะการต่อสู้

อย่างไรก็ตาม ไม่มีการระบุศิลปะการป้องกันตัวที่เฉพาะเจาะจง แม้ว่าเราจะแน่ใจว่าทักษะนั้นมีอยู่จริง

เราสามารถสร้างบอดี้การ์ดได้หลายแบบ (โดยการสืบทอดคลาสนี้) พวกเขาทั้งหมดจะสามารถปกป้องลูกค้าและยิงผู้โจมตีได้

"คุณพูดถูก มันเหมือนกับส่วนต่อประสานที่มีวิธีการใช้งานไม่กี่อย่าง"

"ใช่ คลาสนามธรรมประเภทนี้มีอยู่ทั่วไปในคลาส Java SE มาตรฐาน"