0Pricing
Java Academy · บทเรียน

คลาสนามธรรม

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

คลาสนามธรรม เป็นบทเรียน Java Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 3 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Java Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Java Academy มีบทเรียนทั้งหมด 3 บทเรียน

คลาส abstract คืออะไร

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

โค้ด: ไม่สามารถสร้างอ็อบเจกต์ได้

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

public class Main {
  // Abstract class with one abstract method and one concrete method
  static abstract class Animal {
    abstract void speak();              // must be implemented by subclasses
    void info() {                       // concrete method allowed
      System.out.println("I am an animal.");
    }
  }

  public static void main(String[] args) {
    // Animal a = new Animal(); // Uncommenting would not compile: cannot instantiate abstract class
    System.out.println("You cannot create an Animal directly if it is abstract.");
  }
}

เหตุใดจึงใช้คลาสนามธรรม

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

โค้ด: นำเมธอด abstract ไปใช้

คลาสย่อยต้องนำเมธอด abstract ไปใช้ เมธอดรูปธรรมจากคลาสนามธรรมจะถูกสืบทอดและนำกลับมาใช้ใหม่ได้

public class Main {
  static abstract class Animal {
    abstract void speak();
    void info() {
      System.out.println("I am an animal.");
    }
  }

  static class Dog extends Animal {
    // Must implement speak()
    void speak() {
      System.out.println("Woof!");
    }
  }

  public static void main(String[] args) {
    Dog d = new Dog();      // allowed: Dog is concrete
    d.info();               // inherited concrete method
    d.speak();              // Dog's implementation
  }
}

กฎและการผสมผสาน

กฎ: คลาส abstract อาจมีฟิลด์ ตัวสร้าง และเมธอดรูปธรรม คลาสย่อยจะกลายเป็นคลาสรูปธรรมได้ก็ต่อเมื่อนำเมธอด abstract ทั้งหมดไปใช้ หากไม่เช่นนั้นก็จะเป็นคลาส abstract เช่นกัน

โค้ด: abstract กับพหุรูปแบบ

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

public class Main {
  static abstract class Animal {
    abstract void speak();
  }

  static class Dog extends Animal {
    void speak() { System.out.println("Woof!"); }
  }

  static class Cat extends Animal {
    void speak() { System.out.println("Meow!"); }
  }

  public static void main(String[] args) {
    // Polymorphism through abstract base type
    Animal[] pets = { new Dog(), new Cat() };
    for (int i = 0; i < pets.length; i = i + 1) {
      pets[i].speak(); // each subclass provides its own behavior
    }
  }
}

ตรวจสอบคลาสนามธรรม

ตรวจความเข้าใจ: ข้อใดกล่าวเกี่ยวกับคลาสนามธรรมได้ถูกต้อง

สรุปทบทวน

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

คำถามที่พบบ่อย

บทเรียน “คลาสนามธรรม” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “คลาสนามธรรม” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Java Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Java Academy มีบทเรียนทั้งหมด 3 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “คลาสนามธรรม”

ประกาศคลาสและเมธอดนามธรรม ทำความเข้าใจว่าเหตุใดจึงสร้างอินสแตนซ์โดยตรงไม่ได้ และดูวิธีที่คลาสย่อยเติมเต็มการออกแบบ คุณปฏิบัติ Java Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Java Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Java Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 3 บทเรียน

บทเรียน “คลาสนามธรรม” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Java Academy นี้ได้ไหม

ได้ บทเรียน Java Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. คลาสนามธรรม
  2. อินเทอร์เฟซ (บทนำและข้อเปรียบต่าง)
  3. การแปลงชนิดขึ้น/ลงและ instanceof
← กลับไปที่ Java Academy