Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

สร้าง Constructor ที่รับพารามิเตอร์ใน Abstract Class ได้ไหม?

ได้ เราสามารถกำหนด 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() ทุกครั้ง