Difference between Class and Structure
ณัฐชนน เที่ยงธรรม 650710540
ในC#ทั้ง class และ structure นั้นใช้ในการกำหนดcustom data typesเหมือนกัน,แต่ทั้งสองก็มีความต่างกันอยู่บ้าง เช่น
1)inheritanceหรือการสืบทอด
class สามารถสืบทอดมาจากclass อื่นได้ แต่ structure ไม่สามารถสืบทอดต่อกันได้
2)Reference type และ Value type
Class เป็นReference typeซึ่งหมายความว่าเมื่อสร้างobjectของclassการอ้างอิงของobjectนั้นจะถูกสร้างขึ้นและถ้าเกิดการเปลี่ยนแปลงเกี่ยวกับobjectนั้นจะทำให้เกิดการเปลี่ยนแปลงในทุกที่ๆถูกอ้างอิงถึงในทางกลับกันStructure จะเป็นแบบValue typeหมายความว่าเมื่อคุณสร้างตัวแปรของstructureค่าจริงของตัวแปรนั้นจะถูกเก็บไว้ในหน่วยความจำและการเปลี่ยนแปลงที่เกิดขึ้นกับตัวแปรจะไม่เปลี่ยนค่าของตัวแปรในหน่วยความจำ
3)Default Constructor
คลาสจะมี Default Constructorเสมอซึ่งจะถูกเรียกใช้เมื่อมีการสร้างobjectของclass ในทางตรงกันข้ามStructureจะไม่มีdefault constructorเพราะสามารถกำหนดconstructor เริ่มต้นได้
4)initializers
เมื่อสร้างobjectของคลาสตัวแปรจะถูกกำหนดเป็นค่าเริ่มต้น (null สำหรับ reference types และ 0 สำหรับvalue types)เมื่อคุณสร้างตัวแปรของstructureตัวแปรจะถูกกำหนดเป็นค่าเริ่มต้นเช่นกันแต่สามารถแก้ไขค่าเริ่มต้นได้
5)Size และ Performance
structureมักจะมีขนาดและความเร็วมากกว่าclassเพราะว่าไม่มีตัวแปรอ้างอิงหรือoverheadซึ่งทำให้structureสามารถส่งพารามิเตอร์ได้เร็วกว่าclass
ตัวอย่างการสร้างClass
ตัวอย่างการสร้างstructure
Class และ Structure ใน Java
classในjavaคือแนวคิดพื้นฐานของการเขียนโปรแกรมเชิงวัตถุ(Object Oriented Programming , OOP)และยังเป็นแม่แบบในการสร้างobjectที่มีคุณสมบัติเดียวกัน
คุณสมบัติของclassในjava 1)classคือแม่แบบสำหรับการสร้างobject 2)classไม่มีการครอบครองพื้นที่ในหน่วยความจำ 3)classคือกลุ่มของตัวแปรที่มีชนิดข้อมูลแตกต่างกันและกลุ่มของmethod 4)classในjavaประกอบด้วย -Data memberหรือinstance -Method -Constructor -Nested Class -Interface
ตัวอย่างการสร้างclassในภาษาjava
Javaนั้นไม่มีStructureเพราะสามารถใช้Classในทำงานได้เหมือนกันโดยการกำหนดinstanceให้เหมาะสม
Class และ Structure ใน Python
ในpython Classคือแม่แบบ(Blue print)สำหรับให้ผู้ใช้สร้างObjectบนพื้นฐานของการเขียนโปรแกรมเชิงวัตถุ(Object Oriented Programming)เหมือนในภาษาC#และJava
การสร้างClassในPython
การสร้างObject
ฟังก์ชัน __init__()ในpythonทำอะไรได้บ่าง
โดยทุกคลาสจะมีFunctionที่เรียกว่า_init_()ซึ่งจะทำงานเมื่อมีการเรียกใช้Class ตัวอย่างเช่นสร้างClass Studentโดยให้ฟังก์ชั่น_init_()
โดยเราสามารถกำหนดค่าของตัวแปรได้ในฟังก์ชั่น__init__()เลยดังตัวอย่าง
ฟังก์ชัน __str__()ทำอะไรได้
โดยในpythonจะมีmethodที่ชื่อว่า__str__()มีไว้สำหรับกำหนดวิธีการแสดงผลในรูปแบบstringของobject
ตัวอย่างของการไม่ใช้__str__()จะทำให้outputที่ออกมาจะเป็นที่อยู่หน่วยความจำของออบเจกต์p1
และclassสามารถมีmethodอยู่ข้างในได้ดังตัวอย่าง
และถ้าเราไม่อยากใช้คำว่าselfเราสามารถใช้คำอะไรก็ได้มาแทนselfโดยมีข้อแม้ว่าต้องเป็นparameterแรกของfunctionเช่นการใช้myobjectและabcแทน
และเหมือนJava Pythonก็ไม่มีstructureเหมือนกัน
แหล่งอ้างอิง
https://www.oracle.com/java/technologies/simple-familiar.html https://www.geeksforgeeks.org/difference-between-class-and-structure-in-c-sharp/ https://www.saladpuk.com/beginner-1/csharp101/intermediate/constructor https://www.geeksforgeeks.org/classes-objects-java/ https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/class https://www.geeksforgeeks.org/python-classes-and-objects/ https://www.w3schools.com/python/python_classes.asp https://www.geeksforgeeks.org/python-classes-and-objects/
Last updated