ได้ เราสามารถกำหนด Constructor ที่รับพารามิเตอร์ (Parameterized Constructor) ใน Abstract Class ได้
เงื่อนไขการกำหนด Constructor ใน Abstract Class
- คลาสลูก (Subclass) ที่ extends Abstract Class ต้องมี Constructor และต้องเรียก Constructor ของคลาสแม่ด้วย super()
- เรียก Constructor ของคลาสแม่ที่รับพารามิเตอร์ได้ด้วย super(ค่า)
- ถ้าไม่ใส่ super() ใน Constructor ของคลาสลูก จะเกิด Compile-time Error
ตัวอย่างโค้ด
abstract class AbstractClassTest {
AbstractClassTest(int a) { // Parameterized Constructor
System.out.println("Parameterized Constructor of an abstract class a=" + a);
}
}
public class Test extends AbstractClassTest {
Test() {
super(20); // ต้องเรียก super(ค่า)
System.out.println("Test Class Constructor");
}
public static void main(String[] args) {
Test obj = new Test();
}
}
ในตัวอย่าง ต้องมี super(20) ใน Constructor ของ Test ถ้าไม่มีจะ Compile Error
ผลลัพธ์
Parameterized Constructor of an abstract class a=20
Test Class Constructor
จุดสำคัญ
- Abstract Class ไม่สามารถสร้างอินสแตนซ์ได้โดยตรง
- Constructor ใน Abstract Class ใช้สำหรับเริ่มต้นค่าสำหรับ Subclass
- Subclass บังคับ ต้องเรียก super() ทุกครั้ง