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