سلام
یک interface تنها حاوی امضای (signature) متدها، delegate ها و event هاست. پیاده سازی یا implementation اونها همونطور که در مثال زیر می بینید در کلاسی که از این اینترفیس مشتق می شوند انجام میگیرد.
interface ISampleInterface
{
void SampleMethod();
}
class ImplementationClass : ISampleInterface
{
// Explicit interface member implementation:
void ISampleInterface.SampleMethod()
{
// Method implementation.
}
static void Main()
{
// Declare an interface instance.
ISampleInterface obj = new ImplementationClass();
// Call the member.
obj.SampleMethod();
}
}
یک interface می تواند عضوی از یک فضای نام یا کلاس باشد و می تواند حاوی امضای (منظور Header تابع یا هر چیز دیگر است) یکی از این موارد باشد:
یک interface می تواند از یک یا بیش از یک interface پایه مشتق شود. هنگامی که در مقابل : لیست کلاس ها و interfaceهای پایه یا base لیست می شود نام کلاس باید قبل از نام interface قرار گیرد.
کلاسی که یک interfaceرا پیاده سازی می کند می تواند علناً اعضای interface را پیاده سازی کند. عضوی که به شکل علنی پیاده سازی شده نمی تواند از طریق یک نمونه ایجاد شده از کلاس مورد دستیابی قرار گیرد بلکه تنها از طریق نمونه ایجاد شده از روی interfaceمی توان به آن دست پیدا کرد:
// keyword_interface_2.cs
// Interface implementation
using System;
interface IPoint
{
// Property signatures:
int x
{
get;
set;
}
int y
{
get;
set;
}
}
class Point : IPoint
{
// Fields:
private int _x;
private int _y;
// Constructor:
public Point(int x, int y)
{
_x = x;
_y = y;
}
// Property implementation:
public int x
{
get
{
return _x;
}
set
{
_x = value;
}
}
public int y
{
get
{
return _y;
}
set
{
_y = value;
}
}
}
class MainClass
{
static void PrintPoint(IPoint p)
{
Console.WriteLine("x={0}, y={1}", p.x, p.y);
}
static void Main()
{
Point p = new Point(2, 3);
Console.Write("My Point: ");
PrintPoint(p);
}
}
Output
My Point: x=2, y=3