एनकैप्सुलेशन (Encapsulation) डेटा (फील्ड्स) और व्यवहार (मेथड्स) को एक इकाई (क्लास) में बांधना और आंतरिक विवरण छुपाना है। C# में एक्सेस मॉडिफायर्स द्वारा लागू किया जाता है।
C# एक्सेस मॉडिफायर्स
| मॉडिफायर | विवरण |
|---|---|
public | कहीं से भी एक्सेसिबल |
private | केवल उसी क्लास के अंदर (डिफ़ॉल्ट) |
protected | उसी क्लास + डेराइव्ड क्लासेस |
internal | उसी असेंबली के अंदर |
protected internal | उसी असेंबली OR डेराइव्ड क्लासेस |
private protected | उसी असेंबली में डेराइव्ड क्लासेस |
उदाहरण: private फील्ड्स + public मेथड्स
using System;
namespace RectangleApplication
{
class Rectangle
{
private double length;
private double width;
public void AcceptDetails()
{
length = 10;
width = 15;
}
public double GetArea()
{
return length * width;
}
public void Display()
{
Console.WriteLine("Length: {0}", length);
Console.WriteLine("Width: {0}", width);
Console.WriteLine("Area: {0}", GetArea());
}
}
class ExecuteRectangle
{
static void Main(string[] args)
{
Rectangle r = new Rectangle();
r.AcceptDetails(); // डेटा सेट करने का नियंत्रित तरीका
r.Display(); // डेटा पढ़ने का नियंत्रित तरीका
Console.ReadLine();
}
}
}
आउटपुट
Length: 10 Width: 15 Area: 150
सर्वोत्तम प्रथाएं
- फील्ड्स को
privateरखें। - एक्सेस के लिए
publicप्रॉपर्टीज़ उपयोग करें (get/setमें वैलिडेशन)। - ऑटो-इम्प्लीमेंटेड प्रॉपर्टी:
public double Length { get; set; } - रीड-ओनली:
public double Area => length * width;(एक्सप्रेशन-बॉडीड)।
लाभ
- डेटा अखंडता (वैलिडेशन)।
- आंतरिक कार्यान्वयन बदलने की स्वतंत्रता।
- रखरखाव और टेस्टेबिलिटी आसान।