首页 > 开发 > 综合 > 正文

C#中的接口

2024-07-21 02:18:45
字体:
来源:转载
供稿:网友
接口把一组公共方法和属性组合起来 ,以封装特定功能的一个集合。通过类可以实现接口,这样类就支持接口所有的属性和方法。
接口只能对方法和属性进行定义,不能实现,只能由支持它的类实现。接口中的成员不能用访问符修饰,如public,private,它的成员默认为public
定义接口比较简 单
public interface imyinterface
{
void dosomething();//方法成员
int myattribute//属性成员
{
get;//这里只能定义这个属性是否为只读
set;
}
}
接口和抽象类比较相似,但一个类只能派生于一个抽象类,不过可以实现n个接口。


举个例子来说明一下。
有两个抽象类,car和train,,汽车和火车
下面还有许多类,比如公交车,卡车等都派生于汽车
客车,货车都派生于火车
在car,train中公别定义了汽车与火车的一 些主要特性。
自然的,它们的派生类就拥有这样的特性,
但是汽车下的公交车,火车下的客车都可以乘载客人,所以这两个类可以共同实现一个拥有乘载客人功能的接口,而卡车与货车可以共同实现一个拥有运载货物的接口。


一个类支持一个接品,就必须实现它所有的成员
interface imyinterface
{
void dosomething();
void doelsething();
}
class myclass:imyinterface
{
void imyinterface.dosomething()
{
console.writeline("1");
}
public virtual void doelsethiing()
{

console.writeline("2");
}

}
class myclass2:myclass
{
public override void doelsething()
{
console.writelint(“3“);
}
}


上面定义了一个接口imyinterface, myclass实现了这个接口, 这样,派生于myclass的类myclass2也就默认的支持这个接口,也继承了对方法的实现,在myclass2中,还可以对doelsething方法进行重写。
但这是有前提的。那就是doelsething方法是由myclass类隐式实现的。隐式实现只须匹配方法返回值和方法签名即可。这样的方 法,可以使用关健字vritual 和 abstract来修饰,而且可以用类的实例类调用
class obj=new myclass();
obj.doelsethiing();

而第一个方法dosomething是显式执行的。它只能由接口的引用变量来调用。而且派生类不会继承这个方法的实现,所以上面的myclass2类也要再加一个这个方法的实现 ,因为它继承了myclass,就默 认的支持这个接口。



发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表