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