Constructor
ชนิภรณ์ สิงห์ทอง 640710504
Constructor คืออะไร?
Constructor คือฟังก์ชันแบบหนึ่งซึ่งเป็นตัวที่สำคัญมีหน้าที่กำหนดค่าเริ่มต้นให้กับ Object ในขณะที่มีการสร้าง Object ของ Class
The __construct() Function
การสร้างฟังก์ชัน __construct() ใน PHP จะสังเกตุได้ว่า ฟังก์ชัน __construct() จะเริ่มต้นด้วยเครื่องหมายขีดล่างสองตัว (__) และเมื่อมีการใช้ฟังก์ชัน __construct() , PHP จะเรียกใช้ฟังก์ชันนี้อัตโนมัติเมื่อมีการสร้าง Object จาก Class
Constructor สามารถแบ่งออกได้ 3 แบบ ดังนี้:
1.Default Constructor
คือ Constructor แบบไม่มี argument หรือ parameter
2.Parameter-less Constructor
คือ Constructor ที่ผู้ใช้งานสร้างขึ้นมา แต่ไม่มีการกำหนดค่าตัวแปร หรือ argument มีการทำงานเหมือน Default Constructor
3.Parameterized Constructor
คือ Constructor ที่ผู้ใช้กำหนด หรือสร้างขึ้น ซึ่งมีการกำหนดargument เรียกว่าConstructorแบบกำหนดพารามิเตอร์ ค่า argument ต่างๆของ Constructor นี้จะถูกส่งในขณะที่สร้าง Object และ method อื่นของคลาสนั้นๆก็ยังสามารถเรียกใช้ Constructor นี้ ได้ด้วย
เปรียบเทียบการใช้ Constructor ใน Java,C++,Python
1.Constructor ใน Java
ชื่อ Constructor เป็นชื่อเดียวกันกับชื่อ Class
ไม่มีการกำหนด return type
สามารถมี Constructor หลายตัวในคลาสเดียวได้ผ่าน การโอเวอร์โหลด (Overloading)
ประเภทของ Constructor ใน Java
Default Constructor: Constructorเริ่มต้นที่ถูกสร้างขึ้นอัตโนมัติหากไม่มีการกำหนดConstructorใด ๆ
Parameterized Constructor: Constructorที่รับพารามิเตอร์เพื่อกำหนดค่าเริ่มต้นให้กับตัวแปรสมาชิก
2.Constructor ใน C++
คล้าย Constructor ในภาษา Java โดยที่ชื่อ Constructor ชื่อเดียวกับ Class และไม่มีการกำหนด return type
รองรับการโอเวอร์โหลด (Overloading) เพื่อให้มีหลาย Constructor ที่รับพารามิเตอร์ต่างกันได้
ประเภทของคอนสตรัคเตอร์ใน C++
Default Constructor: Constructorที่ไม่รับพารามิเตอร์ใด ๆ
Parameterized Constructor: Constructorที่รับพารามิเตอร์เพื่อกำหนดค่าเริ่มต้น
Copy Constructor: Constructorที่สร้าง Object ใหม่โดยการคัดลอกค่าจาก Object อื่น
ตัวอย่างการใช้ Copy Constructor :
3.Constructor ใน Python
ฟังก์ชัน
__init__()ทำหน้าที่เป็น Constructorรับ argument ต่าง ๆ ผ่าน
self(ที่เป็นตัวแทนของ Object) และ argument อื่น ๆ เพื่อกำหนดค่าเริ่มต้นไม่ต้องระบุชนิดข้อมูลของตัวแปรและไม่มีการโอเวอร์โหลด(Overloading)
ตัวอย่าง Code การใช้ Constructor ใน Java,C++,Python
ตัวอย่าง:
ผลลัพธ์:
สรุป:
จากตัวอย่างโค้ด PHP จะเห็นได้ว่าการใช้ Constructor ช่วยให้ไม่จำเป็นต้องเรียกเมธอด set_name() ซึ่งช่วยลดจำนวนโค้ดลงได้
ในภาษา Java มี Constructor เป็นเมธอดชื่อเดียวกันกับ Class และไม่มีการกำหนด return type
C++ มีรูปแบบคล้าย Java โดยที่ constructor ก็มีชื่อเหมือน class และไม่มี return type เช่นกัน
ใน Python constructor ถูกกำหนดผ่านเมธอด
__init__()เมื่อมีการสร้างอินสแตนซ์ (object) ของคลาส คอนสตรัคเตอร์จะถูกเรียกใช้งานทันทีโดยอัตโนมัติ
ข้อดีของการใช้ Constructor
ทำให้ออบเจ็กต์มีค่าเริ่มต้นพร้อมใช้งานทันที
ช่วยให้การเขียนโปรแกรมในแนวเชิงวัตถุมีความชัดเจนและเป็นระบบมากขึ้น
ช่วยลดความเสี่ยงจากการใช้ตัวแปรที่ยังไม่ได้กำหนดค่า ซึ่งอาจทำให้เกิดข้อผิดพลาดในโปรแกรม
Presentation
Video Clip
Reference
the __construct() Function : W3Schools.(1999-2024).PHP OOP - Constructor. https://www.w3schools.com/php/php_oop_constructor.asp.
Default Constructor,Parameter-less Constructor,Parameterized Constructor : Fahmida Yesmin.(2020,October,10).Use of Constructor in PHP.https://linuxhint.com/constructor_in_php/.
เปรียบเทียบการใช้ Constructor ใน Java : https://docs.oracle.com/javase/tutorial/java/javaOO/constructors.html.
เปรียบเทียบการใช้ Constructor ใน C++ : https://en.cppreference.com/w/cpp/language/constructor.
เปรียบเทียบการใช้ Constructor ใน Python : https://docs.python.org/3/tutorial/classes.html#class-objects.
ตัวอย่าง Code การใช้ Constructor ใน PHP : W3Schools.(1999-2024).Example Constructor.https://www.w3schools.com/php/phptryit.asp?filename=tryphp_constructor
ตัวอย่าง Code การใช้ Constructor ใน Java : John Squirrels.(2023,July,21).Constructor Chaining ใน Java.https://codegym.cc/th/groups/posts/th.399.constructor-chaining-n-java.
ตัวอย่าง Code การใช้ Constructor ใน C++ : benznest.(2018,August,3).รู้จัก Constructor.https://benzneststudios.com/blog/c-programming/c-programming-basic-6-oop/
ตัวอย่าง Code การใช้ Constructor ใน Python : GeeksforGeeks.(2024,September,5).Python OOPs Concepts.https://www.geeksforgeeks.org/python-oops-concepts/?ref=outind.
Last updated