Sarp
مدیر بازنشسته
اینترفیس مجموعه ای از متدهای abstract است که برنامه ای داخلشان نوشته نشده است و در برنامه های دیگر کدهای داخل این متدها نوشته میشود. بنابراین، فقط مشخصات متدها یکبار در اینترفیس تعریف میشود و هر جا که لازم باشد برنامه داخل متدها نوشته میشود.
بدین ترتیب با استفاده از اینترفیس میتوان وراثت چندگانه داشت. با استفاده از اینترفیس، کد سی شارپ قابلیت بهتری در نگهداری، انعطاف و بازمصرفی پیدا میکند.
به مثال زیر که تعریفی از محاسبه مساحت به شکل کلی دارد دقت کنید. محاسبه مساحت دایره با چهارضلعی با هم متفاوت است، لذا اینترفیس بکار میآید: یک اینترفیس بنام Area تعریف میکنیم که دو مقدار x و y میگیرد.
کلاسهای Circle و Rect را از روی این اینترفیس به وراثت میسازیم Circle:Area و Rect:Area و برای هر یک مساحت مخصوص خودش را در متد Get محاسبه کرده و مقدار مساحت را برمیگردانیم.
نهایتا با کلاس InterfaceDemo از این کلاسها اینستانس ساخته و مساحتها را با دادن مقدار اولیه بدست میآوریم.
بدین ترتیب با استفاده از اینترفیس میتوان وراثت چندگانه داشت. با استفاده از اینترفیس، کد سی شارپ قابلیت بهتری در نگهداری، انعطاف و بازمصرفی پیدا میکند.
به مثال زیر که تعریفی از محاسبه مساحت به شکل کلی دارد دقت کنید. محاسبه مساحت دایره با چهارضلعی با هم متفاوت است، لذا اینترفیس بکار میآید: یک اینترفیس بنام Area تعریف میکنیم که دو مقدار x و y میگیرد.
کلاسهای Circle و Rect را از روی این اینترفیس به وراثت میسازیم Circle:Area و Rect:Area و برای هر یک مساحت مخصوص خودش را در متد Get محاسبه کرده و مقدار مساحت را برمیگردانیم.
نهایتا با کلاس InterfaceDemo از این کلاسها اینستانس ساخته و مساحتها را با دادن مقدار اولیه بدست میآوریم.
PHP:
interface Area
{
double Get(double x, double y);
}
class Circle:Area
{
//overriding interface method
public double Get(double x, double y)
{
return 3.14* x * x;
}
}
class Rect:Area
{
//overriding interface method
public double Get(double x, double y)
{
return x * y;
}
}
class InterfaceDemo
{
static void Main(string[] args)
{
//creating objects of child class
Rect r = new Rect();
Circle c = new Circle();
double k = r.Get(10.2, 12.9);
double l = c.Get(5.0,0);
Console.WriteLine("Area of rect= {0}", k);
Console.WriteLine("Area of circle= {0}", l);
}
}