Java Abstraction
คลาสนามธรรมและวิธีการ
การ แยกข้อมูลเป็นกระบวนการในการซ่อนรายละเอียดบางอย่างและแสดงเฉพาะข้อมูลที่จำเป็นต่อผู้ใช้
นามธรรมสามารถทำได้ด้วยคลาสนามธรรมหรือ
อินเทอร์เฟซ (ซึ่งคุณจะได้เรียนรู้เพิ่มเติมในบทต่อไป)
คีย์เวิร์ด คือabstract
non-access modifier ใช้สำหรับคลาสและเมธอด:
- คลาสนามธรรม:เป็นคลาสที่ถูกจำกัดซึ่งไม่สามารถใช้สร้างอ็อบเจ็กต์ได้ (หากต้องการเข้าถึง คลาสนั้นต้องสืบทอดมาจากคลาสอื่น)
- วิธีนามธรรม:ใช้ได้เฉพาะในคลาสนามธรรม และไม่มีเนื้อหา ร่างกายมีให้โดยคลาสย่อย (สืบทอดมาจาก)
คลาสนามธรรมสามารถมีได้ทั้งวิธีนามธรรมและปกติ:
abstract class Animal {
public abstract void animalSound();
public void sleep() {
System.out.println("Zzz");
}
}
จากตัวอย่างข้างต้น ไม่สามารถสร้างวัตถุของคลาส Animal ได้:
Animal myObj = new Animal(); // will generate an error
ในการเข้าถึงคลาสนามธรรม จะต้องสืบทอดมาจากคลาสอื่น มาแปลงคลาส Animal ที่เราใช้ใน บท Polymorphismเป็นคลาสนามธรรมกัน:
จำจากบท Inheritanceที่เราใช้extends
คีย์เวิร์ดเพื่อสืบทอดจากคลาส
ตัวอย่าง
// Abstract class
abstract class Animal {
// Abstract method (does not have a body)
public abstract void animalSound();
// Regular method
public void sleep() {
System.out.println("Zzz");
}
}
// Subclass (inherit from Animal)
class Pig extends Animal {
public void animalSound() {
// The body of animalSound() is provided here
System.out.println("The pig says: wee wee");
}
}
class Main {
public static void main(String[] args) {
Pig myPig = new Pig(); // Create a Pig object
myPig.animalSound();
myPig.sleep();
}
}
ทำไมและเมื่อใดจึงควรใช้คลาสนามธรรมและวิธีการ
เพื่อให้ได้ความปลอดภัย - ซ่อนรายละเอียดบางอย่างและแสดงเฉพาะรายละเอียดที่สำคัญของวัตถุ
หมายเหตุ:คุณสามารถบรรลุสิ่งที่เป็นนามธรรมได้ด้วยInterfacesซึ่งคุณจะได้เรียนรู้เพิ่มเติมในบทต่อไป