Default Constructor
ภูริทัต คมขำ 650710577
Default Constructor ทำหน้าที่เดียวกับ constructor กล่าวคือ ใช้สำหรับกำหนดค่าใน fields ให้กับวัตถุ แต่ Default Constructor แตกต่างออกไป โดยที่ จะไม่รับ parameters ใดๆ ซึ่งจะกำหนดค่าเริ่มต้นให้กับฟิลด์ของวัตถุ
เห็นได้ว่าคลาส Person ไม่มี constructor ใดๆ เมื่อมีการสร้างวัตถุของ Person ตัว compiler จะกำหนดค่าเริ่มต้นให้ ผลลัพธ์เมื่อสร้างวัตถุ
Implicit default constructor
เมื่อไม่มีการประกาศ constructor ใดๆ ในคลาส compiler จะสร้าง default constructor ให้โดยอัตโนมัติดังตัวอย่างก่อนหน้า
Explicit default constructor
เป็นการสร้าง default constructor โดยที่ผู้เขียนกำหนดข้อมูลเริ่มต้นด้วยตัวเอง
เห็นได้ว่าผู้เขียนได้กำหนดค่าเริ่มต้นให้กับ Name = "_", age = 20 ผลลัพธ์ที่ได้ คือ name จะไม่มีค่า null และ age ไม่มีค่า 0 เหมือน Implicit default constructor แล้ว
ค่าเริ่มต้นที่กำหนด
ค่าเริ่มต้นที่กำหนดให้ขึ้นอยู่กับชนิดข้อมูลของฟิลด์แต่ละตัว
Numeric
เช่นint
,float
,double
,decimal
จะถูกกำหนดค่าเริ่มต้นเป็น 0Boolean
จะถูกกำหนดเป็น falseCharacter
จะถูกกำหนดเป็นค่า nullReference
เช่น string, คลาสต่าง ๆ, อาเรย์ จะถูกกำหนดเป็น nullEnum
ค่าเริ่มต้นจะเป็น สมาชิกตัวแรก
reference type
null
numeric type
0 (zero)
floating-point numeric type
0 (zero)
bool
false
char
'\0'
(U+0000) null character
enum
สมาชิกตัวแรก
struct
สมาชิกแต่ละตัว จะมีค่า default values
ข้อสำคัญ
ถ้าผู้เขียนใส่ constructor อย่างน้อยหนึ่งอัน compiler จะไม่สร้าง default constructor ให้เสมอไป
ดังนั้นเมื่อมีการประกาศ constructor ใดๆแล้ว ถ้าต้องการประกาศ default constructor จะต้องประกาศด้วยตัวเองเพิ่มลงไป
เปรียบเทียบกับ C,Java,Python
C
เนื่องจากภาษา C เป็น Procedural programming language จึงไม่มี class หรือ object อย่าง OOP (object-oriented programming) และทำให้มีการทั้ง constructor, default constructor ได้ ซึ่งสามารถทำได้ในภาษาอื่นๆของ C-based นั้นคือ C++, C#
Java
ภาษา Java เป็นทั้งภาษาที่สนับสนุน OOP จึงมี default constructor เช่นเดียวกับ C#
แต่มีข้อแตกต่างในส่วนค่าเริ่มต้นของ enum ซึ่งใน Java ค่าเริ่มต้น คือ null ส่วนอื่นๆทำงานเช่นเดียวกับ C#
byte
0
short
0
int
0
long
0L
float
0.0f
double
0.0d
char
'\u0000'
String (or any object)
null
boolean
false
Python
Python เป็นภาษาสนับสนุน OOP และ การประกาศตัวแปรไม่จำเป็นต้องระบุชนิดข้อมูล(Dynamic Typing) ซึ่งถ้าไม่ได้มีการกำหนดชนิดข้อมูล ก็จะไม่สามารถกำหนดค่าเริ่มต้นให้ตัวแปรได้ ส่วนใหญ่จะใช้วิธี Explicit default constructor แทน
ซึ่งแตกต่างที่สามารถกำหนด default constructor ใน parameters ของ constructor ได้เลย
และ Python สามารถกำหนดชนิดข้อมูลตอนประกาศตัวแปรได้
ผลลัพธ์ที่ได้ คือ compiler กำหนดค่าเริ่มต้นให้เมื่อมีการประกาศชนิดข้อมูลร่วมด้วย
Python default values
Numeric Types
จำนวนเต็ม
int
-> 0จำนวนทศนิยม
float
-> 0.0จำนวนเชิงซ้อน
complex
-> 0j
Sequence Types
สตริง
str
->null
ลิสต์
list
->[]
tuple
->()
Mapping Type
คู่อันดับ
dict
->{}
Set Types
เซ็ต
set
->{}
เซ็ตที่ไม่สามารถเปลี่ยนแปลงค่าได้
frozenset
->frozenset()
Boolean Type
ค่าความจริง
bool
-> false
None Type
ไม่ระบุชนิดข้อมูล
anyVar
-> None
Slide
Video Presentation
Reference :
C#
Shiva. (2019, Jan 23). C# | Default Constructor. GeeksforGeeks. https://www.geeksforgeeks.org/c-sharp-default-constructor/
BillWagner, ascpixi, pkulikov, sampreeth-inkulu. (2023, Feb 21). Default values of C# types (C# reference). Microsoft Learn. https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/default-values
C
farzai. (2024, Apr 25). What is Imperative Programming?. GeeksforGeeks. https://www.geeksforgeeks.org/what-is-imperative-programming/
Java
Java Default Constructor. (n.d.). Javapoint. Retrieved Oct 14, 2024, fromhttps://www.javatpoint.com/java-constructor
Primitive Data Types. The Java™ Tutorials. (n.d.) Oracle. Retrieved Oct 14, 2024, from https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
Python
Singh C. (2018, Mar 10). Python Constructors – default and parameterized. BeginnersBook. https://beginnersbook.com/2018/03/python-constructors-default-and-parameterized/
Python Variables. (n.d.). W3school. Retrieved Oct 14, 2024, from https://www.w3schools.com/python/python_variables.asp
Last updated