C # คลาส (Class)
เมื่อคุณกำหนดชั้นเรียนที่คุณกำหนดพิมพ์เขียวสำหรับชนิดข้อมูลที่ นี้ที่จริงไม่ได้กำหนดข้อมูลใด ๆ แต่จะกำหนดชื่อของชั้นมันหมายความว่าอะไรที่เป็นสิ่งที่ถือว่าเป็นระดับวัตถุและสิ่งที่ดำเนินการบนวัตถุ วัตถุกรณีของการเรียน วิธีการและตัวแปร constituting ชั้นจะกลายเป็นสมาชิกของชั้นเรียน
การกำหนดระดับ
ความหมายของการเรียนคือการเริ่มต้นตามด้วยชื่อชั้นของชั้นคำหลักร่างกายของชั้นที่มีอยู่ภายในคู่ของวงเล็บปีกกา ต่อไปนี้เป็นรูปแบบทั่วไปของคำนิยามคลาส:
<เข้าถึงระบุ> CLASS_NAME ระดับ { // ตัวแปรสมาชิก <เข้าถึงระบุ> <ชนิดข้อมูล> variable1; <เข้าถึงระบุ> <ชนิดข้อมูล> variable2; ... <เข้าถึงระบุ> <ชนิดข้อมูล> variablen; // วิธีการเป็นสมาชิก <เข้าถึงระบุ> <ประเภทกลับ> method1 (parameter_list) { // ร่างกายวิธี } <เข้าถึงระบุ> <ประเภทกลับ> Method2 (parameter_list) { // ร่างกายวิธี } ... <เข้าถึงระบุ> <ประเภทกลับ> methodN (parameter_list) { // ร่างกายวิธี } }
โปรดทราบ:
- การเข้าถึงตัวบ่งชี้ <เข้าถึงระบุ> ระบุระดับกฎการเข้าถึงและสมาชิก หากไม่มีการระบุตัวระบุการเข้าถึงเริ่มต้นระดับเริ่มต้นการเข้าถึงตัวบ่งชี้คือภายในเริ่มต้นสมาชิกเข้าถึงตัวระบุความเป็นส่วนตัว
- ชนิดข้อมูล <ชนิดข้อมูล> ระบุประเภทของตัวแปรประเภทผลตอบแทน <กลับ type> ระบุประเภทของข้อมูลที่ส่งกลับโดยผลตอบแทนที่วิธีการ
- หากคุณต้องการที่จะเข้าถึงสมาชิกของชั้นเรียนที่คุณต้องการใช้จุด (.) ผู้ประกอบการ
- ผู้ประกอบการจุดเชื่อมโยงชื่อของชื่อและสมาชิกของวัตถุ
ตัวอย่างต่อไปนี้แสดงให้เห็นถึงแนวคิดที่กล่าวจนถึงขณะนี้:
การใช้ระบบ namespace BoxApplication { กล่องชั้น { ความยาวของประชาชนคู่; // ความยาวความกว้างคู่ประชาชน; // ความกว้างความสูงคู่ประชาชน; // สูง} ระดับ Boxtester { เป็นโมฆะคง main (String args []) { กล่อง box1 = ใหม่กล่อง (); // ประกาศ box1 ชนิดกล่อง กล่อง box2 = ใหม่กล่อง (); // ประกาศ box2 ชนิดกล่อง ปริมาณคู่ = 0.0; // // ปริมาณ box1 รายละเอียด Box1.height = 5.0; Box1.length = 6.0; Box1.breadth = 7.0; // box2 รายละเอียด Box2.height = 10.0; Box2.length = 12.0; Box2.breadth = 13.0; // box1 ปริมาณปริมาณ = Box1.height * * * * * * * * Box1.length Box1.breadth; Console.WriteLine ( "ปริมาณ box1: {0}" ปริมาณ); // box2 ปริมาณปริมาณ = Box2.height * * * * * * * * Box2.length Box2.breadth; Console.WriteLine ( "ปริมาณ box2: {0}" ปริมาณ); Console.ReadKey (); } } }
เมื่อโค้ดข้างต้นจะรวบรวมและดำเนินการก็จะก่อให้เกิดผลลัพธ์ต่อไปนี้:
ปริมาณ box1: 210 ปริมาณ box2: 1560
ฟังก์ชั่นและแพคเกจที่เป็นสมาชิก
ฟังก์ชั่นสมาชิกชั้นเรียนมันเป็นคำนิยามหรือฟังก์ชั่นต้นแบบในการกำหนดระดับเช่นเดียวกับตัวแปรอื่น ๆ ในฐานะที่เป็นสมาชิกของชั้นเรียนที่จะสามารถดำเนินการในระดับวัตถุใด ๆ ที่สมาชิกทุกคนและสามารถเข้าถึงระดับของวัตถุ
ตัวแปรสมาชิกเป็นทรัพย์สินของวัตถุ (จากจุดการออกแบบของมุมมอง) และพวกเขายังคงเป็นส่วนตัวในการดำเนินการแพคเกจ ตัวแปรเหล่านี้เท่านั้นที่สามารถใช้ในการเข้าถึงฟังก์ชันสมาชิกสาธารณะ
ลองใช้แนวคิดดังกล่าวข้างต้นการตั้งค่าและรับค่าของชนิดที่แตกต่างกันของสมาชิกในชั้นเรียน:
การใช้ระบบ namespace BoxApplication { กล่องชั้น { ความยาวคู่ส่วนตัว; // ความยาวความกว้างสองส่วนตัว; // ความกว้างความสูงคู่ส่วนตัว; // สูงโมฆะสาธารณะ SetLength (เลนคู่) { ความยาว = len; } โมฆะสาธารณะ setBreadth (BRE คู่) { ความกว้าง = BRE; } โมฆะสาธารณะ setHeight (Hei คู่) { height = Hei; } ประชาชนคู่ getVolume () { ผลตอบแทนยาว * กว้าง * สูง; } } ระดับ Boxtester { เป็นโมฆะคง main (String args []) { กล่อง box1 = ใหม่กล่อง (); // ประกาศ box1 ชนิดกล่อง กล่อง box2 = ใหม่กล่อง (); // ประกาศ box2 ชนิดกล่อง ปริมาณคู่; // // box1 ปริมาณรายละเอียด Box1.setLength (6.0); Box1.setBreadth (7.0); Box1.setHeight (5.0); // box2 รายละเอียด Box2.setLength (12.0); Box2.setBreadth (13.0); Box2.setHeight (10.0); // ปริมาณ box1 ของปริมาณ = Box1.getVolume (); Console.WriteLine ( "ปริมาณ box1: {0}" ปริมาณ); // ปริมาณ box2 ของปริมาณ = Box2.getVolume (); Console.WriteLine ( "ปริมาณ box2: {0}" ปริมาณ); Console.ReadKey (); } } }
เมื่อโค้ดข้างต้นจะรวบรวมและดำเนินการก็จะก่อให้เกิดผลลัพธ์ต่อไปนี้:
ปริมาณ box1: 210 ปริมาณ box2: 1560
C # ก่อสร้าง
คอนสตรัคของชั้นเป็นฟังก์ชันสมาชิกชั้นพิเศษดำเนินการเมื่อมีการสร้างวัตถุชั้นใหม่
ชื่อชื่อของคอนสตรัคชั้นตรงเดียวกันก็มีประเภทกลับไม่มี
ตัวอย่างต่อไปนี้แสดงให้เห็นถึงแนวคิดของการสร้างไปนี้:
การใช้ระบบ LineApplication namespace { สายชั้น { ความยาวคู่ส่วนตัวความยาวของเส้นสายสาธารณะ // () { Console.WriteLine ( "วัตถุได้ถูกสร้างขึ้น"); } โมฆะสาธารณะ SetLength (เลนคู่) { ความยาว = len; } GetLength คู่สาธารณะ () { ความยาวกลับมา } เป็นโมฆะคง main (String args []) { บรรทัดบรรทัดบรรทัดใหม่ = (); // ตั้ง line.setLength ความยาวสาย (6.0); Console.WriteLine ( "ความยาวของเส้น: {0}" line.getLength ()); Console.ReadKey (); } } }
เมื่อโค้ดข้างต้นจะรวบรวมและดำเนินการก็จะก่อให้เกิดผลลัพธ์ต่อไปนี้:
วัตถุที่สร้างความยาวสาย: 6
ตัวสร้างเริ่มต้นไม่มีพารามิเตอร์แต่ถ้าคุณต้องการคอนสตรัคกับพารามิเตอร์สามารถมีข้อโต้แย้งที่คอนสตรัคนี้เรียกว่าสร้างแบบ parameterized เทคนิคนี้ช่วยให้คุณสามารถสร้างวัตถุในขณะที่วัตถุที่จะกำหนดค่าเริ่มต้นให้ดูตัวอย่างที่เฉพาะเจาะจงต่อไปนี้:
การใช้ระบบ LineApplication namespace { สายชั้น { ความยาวคู่ส่วนตัวความยาวของเส้นสายสาธารณะ (เลนคู่) // // สร้างแบบ parameterized { Console.WriteLine ( "วัตถุได้ถูกสร้างขึ้น, ความยาว = {0}" เลน); ความยาว = len; } โมฆะสาธารณะ SetLength (เลนคู่) { ความยาว = len; } GetLength คู่สาธารณะ () { ความยาวกลับมา } เป็นโมฆะคง main (String args []) { บรรทัดบรรทัดบรรทัดใหม่ = (10.0); Console.WriteLine ( "ความยาวของเส้น: {0}" line.getLength ()); // ตั้ง line.setLength ความยาวสาย (6.0); Console.WriteLine ( "ความยาวของเส้น: {0}" line.getLength ()); Console.ReadKey (); } } }
เมื่อโค้ดข้างต้นจะรวบรวมและดำเนินการก็จะก่อให้เกิดผลลัพธ์ต่อไปนี้:
วัตถุได้ถูกสร้างขึ้น, ความยาว = 10 ความยาวสาย: 10 ความยาวสาย: 6
ใน C # destructor
ระดับdestructor เป็นฟังก์ชันสมาชิกชั้นพิเศษเมื่อชนิดของวัตถุอยู่นอกช่วง
ชื่อ destructor อยู่หน้าชื่อของคลาสที่มีหยัก (~) เป็นคำนำหน้าก็ไม่ได้กลับมาเป็นค่าที่มันจะไม่มีพารามิเตอร์
Destructor สำหรับการสิ้นสุดของโปรแกรม (เช่นการปิดไฟล์ไปยังหน่วยความจำฟรี ฯลฯ ) ก่อนที่จะมีการเปิดตัวของทรัพยากร destructors ไม่สามารถจะได้รับมรดกหรือมากเกินไป
ตัวอย่างต่อไปนี้แสดงให้เห็นถึงแนวคิดของ destructor นี้:
การใช้ระบบ LineApplication namespace { สายชั้น { ความยาวส่วนตัวคู่ความยาวของเส้นสายสาธารณะ // () {// คอนสตรัค Console.WriteLine ( "วัตถุได้ถูกสร้างขึ้น"); } ~ สาย () {// destructor Console.WriteLine ( "วัตถุได้ถูกลบออก"); } โมฆะสาธารณะ SetLength (เลนคู่) { ความยาว = len; } GetLength คู่สาธารณะ () { ความยาวกลับมา } เป็นโมฆะคง main (String args []) { บรรทัดบรรทัดบรรทัดใหม่ = (); // ตั้ง line.setLength ความยาวสาย (6.0); Console.WriteLine ( "ความยาวของเส้น: {0}" line.getLength ()); } } }
เมื่อโค้ดข้างต้นจะรวบรวมและดำเนินการก็จะก่อให้เกิดผลลัพธ์ต่อไปนี้:
วัตถุที่สร้างความยาวสาย: 6 วัตถุที่ถูกลบ
C # ระดับสมาชิกคง
เราสามารถใช้คำหลักสมาชิกระดับคงที่มีการประกาศคงเมื่อเราประกาศเป็นสมาชิกระดับเป็นแบบคงที่ซึ่งหมายความว่าไม่ว่าวัตถุชั้นจำนวนมากจะถูกสร้างขึ้นไม่ได้มีเพียงคนเดียวคือสำเนาของสมาชิกแบบคงที่
เพียงหนึ่งตัวอย่างของสมาชิกของคงคำที่หมายถึงระดับที่ตัวแปรคงที่ใช้ในการกำหนดค่าคงที่เพราะค่าของพวกเขาสามารถเรียกได้โดยตรงโดยไม่จำเป็นต้องสร้างตัวอย่างของการเรียนในชั้นเรียนเพื่อให้ได้ความ ตัวแปรคงที่สามารถเริ่มต้นได้ในความหมายของฟังก์ชันสมาชิกภายนอกหรือชั้นเรียน นอกจากนี้คุณยังสามารถเริ่มต้นตัวแปรคงที่ที่กำหนดไว้ในชั้นเรียน
ตัวอย่างต่อไปนี้แสดงให้เห็นถึงการใช้ตัวแปรคง:
การใช้ระบบ StaticVarApplication namespace { ระดับ StaticVar { ประชาชน NUM int คง; นับโมฆะสาธารณะ () { NUM ++; } int สาธารณะ getNum () { กลับ NUM; } } ระดับ StaticTester { เป็นโมฆะคง main (String args []) { StaticVar S1 = StaticVar ใหม่ (); StaticVar S2 = StaticVar ใหม่ (); s1.count (); s1.count (); s1.count (); s2.count (); s2.count (); s2.count (); Console.WriteLine ( "NUM ตัวแปร S1: {0}" s1.getNum ()); Console.WriteLine ( "NUM ตัวแปร S2: {0}" s2.getNum ()); Console.ReadKey (); } } }
เมื่อโค้ดข้างต้นจะรวบรวมและดำเนินการก็จะก่อให้เกิดผลลัพธ์ต่อไปนี้:
NUM ตัวแปร S1: 6 NUM ตัวแปร S2: 6
นอกจากนี้คุณยังสามารถใส่ฟังก์ชั่นสมาชิกจะประกาศเป็นแบบคงที่ฟังก์ชั่นดังกล่าวสามารถเข้าถึงตัวแปรคงที่ ฟังก์ชั่นแบบคงที่ก่อนวัตถุที่ถูกสร้างขึ้นมามันมีอยู่ตัวอย่างต่อไปนี้แสดงให้เห็นถึงการใช้ฟังก์ชั่นแบบคงที่นี้:
การใช้ระบบ StaticVarApplication namespace { ระดับ StaticVar { ประชาชน NUM int คง; นับโมฆะสาธารณะ () { NUM ++; } int สาธารณะคง getNum () { กลับ NUM; } } ระดับ StaticTester { เป็นโมฆะคง main (String args []) { StaticVar s = StaticVar ใหม่ (); s.count (); s.count (); s.count (); Console.WriteLine ( "NUM ตัวแปร: {0}" StaticVar.getNum ()); Console.ReadKey (); } } }
เมื่อโค้ดข้างต้นจะรวบรวมและดำเนินการก็จะก่อให้เกิดผลลัพธ์ต่อไปนี้:
NUM ตัวแปร: 3