ในส่วนนี้ เราจะพูดถึงภาพรวมของคลาสต่างๆ
เราพูดเสมอว่า C# เป็นการเขียนโปรแกรมเชิงวัตถุ และเราได้เรียนรู้มาก่อนหน้านี้ว่าแต่ละออบเจ็กต์จะต้องอยู่ในคลาสเดียวกัน มีหลายคลาสที่ถูกกำหนดไว้ใน .net แต่ในการเขียนโปรแกรมจริง เรายังต้องปรับแต่งบางคลาสให้กับโปรแกรมด้วย
คลาสทั้งหมดใน C# สืบทอดโดยตรงหรือโดยอ้อมจากคลาส System.Object ซึ่งอนุญาตให้คลาสใน C# สืบทอดจากรูทเดียว หากเราไม่ได้ระบุคลาสที่สืบทอดมาอย่างชัดเจน คอมไพลเลอร์จะถือว่าคลาสนั้นสืบทอดมาจากคลาส System.Object คลาส System.Object สามารถแสดงด้วยคีย์เวิร์ดตัวพิมพ์เล็กได้ ทั้งสองอย่างนี้เทียบเท่ากัน
โดยสิ้นเชิง มีองค์ประกอบหลักสามประการของคลาส และแน่นอนว่ายังมีองค์ประกอบอื่น ๆ อีกในที่นี้ จะให้การสอนแบบเจาะลึกในภายหลังเมื่อฉันได้เรียนรู้เพิ่มเติม มาพูดถึงมันทีหลัง!
1. คุณลักษณะ: แอตทริบิวต์เก็บข้อมูลวัตถุ 2.
วิธีการ: วิธีการอนุญาตให้คุณใช้วัตถุเพื่อดำเนินการสามารถโต้ตอบกับวัตถุอื่น ๆ ผ่านการตั้งค่าคุณสมบัติได้ แต่วิธีการสามารถทำให้การดำเนินการแบบผสมเสร็จสมบูรณ์ได้
3. เหตุการณ์: เราเพิ่งพูดถึงเหตุการณ์ในคลาสที่แล้ว พวกมันสามารถทำสิ่งที่สอดคล้องกันได้เมื่อถูกกระตุ้น
ในที่สุด เมื่อเรากำหนดคลาสเรียบร้อยแล้ว เราก็สามารถสรุปคลาสนั้นได้ เมื่อใช้งาน เราไม่สนใจว่างานจะเสร็จสมบูรณ์อย่างไร เราแค่ต้องรู้ว่าอินเทอร์เฟซสาธารณะแบบใด มีคุณสมบัติใดบ้าง และวิธีการและเหตุการณ์ใดบ้าง สิ่งเหล่านี้เรียกรวมกันว่าสมาชิกของชั้นเรียน
ดังที่เราได้กล่าวไว้ก่อนหน้านี้ เราสามารถใช้คลาสเพื่อสร้างวัตถุ N ได้ แต่พวกมันทั้งหมดจะถูกแยกออกจากกัน มีวิธีใดบ้างที่เราจะแชร์วัตถุระหว่างสองคลาสที่เฉพาะเจาะจงได้
มาถึงประเด็นกันดีกว่า เราสามารถกำหนดชุดของวิธีการหรือคุณลักษณะและนำไปใช้กับชั้นเรียนโดยรวมแทนที่จะใช้เฉพาะกับวัตถุของชั้นเรียนบางอย่าง พวกเขาคือสิ่งที่เราเรียกว่าสมาชิกที่ใช้ร่วมกัน (สมาชิกแบบคงที่) ตัวอย่างเช่น หากเราต้องการทราบว่ามีหนังสือกี่เล่มที่ได้รับการตีพิมพ์ เราใช้แอตทริบิวต์การนับแอตทริบิวต์ที่ใช้ร่วมกัน หรือเพื่อปรับราคาของหนังสือทั้งหมด เราใช้วิธีที่ใช้ร่วมกัน modemon() ซึ่งสามารถให้ส่วนลด 20% ให้กับทุกเล่ม หนังสือ
คลาสประกอบด้วยตัวแปรบางตัว ข้อมูลของตัวแปรเหล่านี้รวมอยู่ในตัวแปรสมาชิก (ตัวแปรส่วนตัวที่เรามักกล่าวถึงก่อนหน้านี้) นอกจากนี้ยังมีโค้ดการดำเนินการบางส่วน และโค้ดเหล่านี้ก็รวมอยู่ในฟังก์ชันของสมาชิกด้วย ฟังก์ชันของสมาชิก ในทางปฏิบัติ ในการดำเนินการ เราจัดเตรียมเฉพาะคุณสมบัติ วิธีการ เหตุการณ์ และอินเทอร์เฟซอื่นๆ เท่านั้น และส่วนข้อมูลทั้งหมดจะถูกซ่อนหรือห่อหุ้มไว้
ตัวแปรสมาชิกและฟังก์ชันสมาชิกเรียกรวมกันว่าสมาชิกของคลาส พวกเขาจะแบ่งออกเป็นสมาชิกแบบคงที่และเอนทิตี
ลองดูตัวอย่างด้านล่าง
สตริงคงที่สาธารณะ aaa; -------- ตัวแปรสมาชิกแบบคงที่
โมฆะสาธารณะแบบคงที่ aaa () -------- ฟังก์ชันสมาชิกแบบคงที่
{
}
สตริงสาธารณะ aaa; ------------- ตัวแปรสมาชิกเอนทิตี
โมฆะสาธารณะ aaa () ------------- ฟังก์ชันสมาชิกเอนทิตี
{
}
โปรดสังเกตว่ามีการใช้คีย์เวิร์ดแบบคง
ที่ข้างต้น เมื่อใช้ตัวแปรสมาชิกแบบคงที่ คุณสามารถใช้
สมาชิกเอนทิตีได้โดยตรงโดยไม่ต้องประกาศออบเจ็กต์ก่อนอื่น คุณต้องประกาศออบเจ็กต์เอนทิตีก่อนจึงจะ
ใช้ได้ จะถูกสร้างขึ้นในฮีปที่ได้รับการจัดการ ประเภทอินสแตนซ์เรียกว่าอ็อบเจ็กต์ และคุณลักษณะหลักของมันคือมีสำเนาของสมาชิกข้อมูลของตัวเอง สมาชิกข้อมูลเหล่านี้ที่ถือโดยออบเจ็กต์เฉพาะเรียกว่าสมาชิกของอินสแตนซ์ ในทางตรงกันข้าม สมาชิกข้อมูลเหล่านั้นที่ไม่ได้ถูกจัดเก็บโดยออบเจ็กต์เฉพาะจะเรียกว่าสมาชิกแบบคงที่และได้รับการประกาศด้วยตัวแก้ไขแบบคงที่ในคลาส ผู้ที่ดำเนินการกับสมาชิกข้อมูลคงที่เท่านั้นเรียกว่าสมาชิกฟังก์ชันคงที่
นอกจากนี้ยังมีความว่างเปล่า: สิ่งที่ส่งคืนหลังจากดำเนินการเมธอดหรือฟังก์ชันทั่วไปสามารถเป็นประเภทใดก็ได้ เช่น int หรือ string หากคุณต้องการเขียนวิธีการที่ไม่ส่งคืนค่า คุณต้องใช้คีย์เวิร์ด void แทนประเภทการส่งคืน
ดังนั้นเราต้องสังเกตคำว่า public ข้างบนนี้ ที่จริงแล้วมันมีสามพี่น้อง: privateprotectedinternal พวกมันถูกเรียกว่า access modifiers ซึ่งใช้เพื่อควบคุมการดำเนินการภายนอกกับสมาชิกคลาสเพื่อให้บรรลุวัตถุประสงค์ในการซ่อนข้อมูล
ด้านล่างนี้เราจะอธิบายแต่ละรายการ
สาธารณะ: คลาสภายนอกสามารถเข้าถึงข้อมูลคลาสได้โดยไม่มีข้อจำกัด
private: จำกัด การใช้งานภายในของคลาสนี้
ป้องกัน: นอกเหนือจากคลาสเองแล้วคลาสใด ๆ ที่สืบทอดคลาสนี้สามารถใช้
ภายในได้: หมายความว่าสามารถใช้ในแอปพลิเคชันเดียวกัน (Application) หรือไลบรารีคลาส (Library) แต่ นี่คือสิ่งที่เราโดยพื้นฐานแล้วไม่ต้องการ
http://www.cnblogs.com/thcjp/archive/2006/09/15/505022.html