เมธอดที่มี access modifier เป็น private จะเข้าถึงได้เฉพาะภายในคลาสเดียวกันเท่านั้น ใช้เพื่อซ่อนรายละเอียดการทำงานภายใน (Implementation Detail) และรองรับการ Encapsulation
ลักษณะสำคัญ
- เข้าถึงได้เฉพาะในคลาสที่ประกาศเท่านั้น
- อินสแตนซ์ของคลาส (Instance) ไม่สามารถเรียกได้
- คลาสลูก (Derived class) ไม่สามารถเรียกได้ (ยกเว้นถ้าเป็น nested class)
- ใช้สำหรับ Helper methods, Validation, Internal logic
ตัวอย่างโค้ด
using System;
class Demo {
// Private method - เรียกได้เฉพาะในคลาส Demo
private int DisplayOne() {
return 10;
}
// Public method - เรียกได้จากภายนอก
public int DisplayTwo() {
return 20;
}
// Public method เรียก private method ภายในได้
public int GetSum() {
return DisplayOne() + DisplayTwo(); // เรียกได้เพราะอยู่ในคลาสเดียวกัน
}
}
class Program {
static void Main() {
Demo d = new Demo();
// d.DisplayOne(); // ❌ Compile Error: inaccessible due to protection level
Console.WriteLine(d.DisplayTwo()); // ✅ OK: 20
Console.WriteLine(d.GetSum()); // ✅ OK: 30
}
}
แนวทางการใช้งาน
| สถานการณ์ | Access Modifier |
|---|---|
| ใช้เฉพาะภายในคลาส | private |
| ใช้ในคลาสและคลาสลูก | protected |
| ใช้ใน Assembly เดียวกัน | internal |
| ใช้ได้ทุกที่ | public |
Best Practice
- เริ่มต้นด้วย
privateเสมอ เปิดเผยเฉพาะเมื่อจำเป็น - ชื่อ Private method ควบอธิบายหน้าที่ชัดเจน (เช่น
CalculateTax,ValidateInput) - หลีกเลี่ยง logic ซับซ้อนใน public method — แยกเป็น private methods ย่อยๆ