宝慕林7450299
接口本身并不实现任何功能,它只是和声明实现该接口的对象订立一个必须实现哪些行为的契约。
这些契约,实现该接口的对象都要遵守,所以是全部方法.
而且 如果该接口 实现了其他接口,那么 这个对象 要实现 所有结构中的 所有方法.
碟生
可以隐藏实现,通过f12只能跳转到接口,看不到实现的代码
Vardis
首先,你要清楚的是,
接口声明不包括数据成员,只能包含方法、属性、事件、索引等成员。
接口中属性声明
比如:
int x { get; set; }//声明属性存取规则
其中
get { return _x; }
set { _x=x; },在继承接口的类中实现。
###int前不能用修饰符,比如public prodected,接口默认访问级别是public .
qq_慕的地4093470
展示对接口引用作用的说明罢了
慕粉1026331268
接口是一种规范,使得别人在实现接口的时候需要完成接口中那未实现的方法,普通类一旦实现接口就必须完成接口内所有未实现的方法,但是可以通过别的方式只去实现部分方法。
可以建一个抽象类,让抽象类去实现接口中的方法(在抽象类中,接口中的方法变成非抽象方法),最后让你那个普通类去继承抽象类,这样就可以只实现你想实现的函数方法了。(因为在普通类继承抽象类时,可以只实现抽象类中部分非抽象方法,不需要全部实现,不过抽象类中如果有抽象方法,抽象方法必须实现)
还不明白,可以百度一下
Bless4757512
接口是没有实现的,你在狗中声明的接口只能在狗中用,猫是没法用的
星辰的泪
用接口还是用类调用要看具体的使用场景的。
假如有10只不同的宠物,攻城狮A负责收集这10只宠物的叫声,攻城狮B负责听这些宠物的声音来给宠物分类。那么你难道要传10个不同的宠物类给B吗,这样B会打死你的。这个时候,你就要建一个叫的接口集合,把10只宠物都封装进这个接口集合,把这个接口集合传给B,B只要循环遍历接口集合,分别调用这个接口的叫的方法,就能让不同宠物叫出声。。。
你可以根据我写的小代码然后和我上面的解释,小小脑补一下。。。
//攻城狮A负责把不同的宠物装进箱子
public static List<ICall> GcsA()
{
Pig p = new Pig();
Dog d = new Dog();
List<ICall> listi = new List<ICall>();
listi.Add((ICall)p);
listi.Add((ICall)d);
return listi;
}
static void Main(string[] args)
{
//攻城狮B拿到了10只宠物的箱子,循环让它门叫
List<ICall> listi = GcsA();
for (int i = 0; i < listi.Count; i++)
{
Console.WriteLine(listi[i].Call());
}
}
最后说一句,接口一般用于规范,这个规范不仅仅只是对创建者的规范,也是对使用者的规范。B只要宠物的叫声,那么你还有必要告诉B这些宠物叫什么名字吗?
慕九州7098840
其实实现接口的类就相当于继承了那个接口,想一想之前实现“统一管理”时候的Pet类型的数组是怎么实现的。。。
zhl6666
别人的?得把别人的接口放在自己的项目下才能用哦!
慕姐3146705
强制转换属于显示接口,而一般用隐式接口
当类实现多个接口时,并且接口中包含相同的方法签名,可以标识出哪个方法属于哪个接口
慕盖茨5489510
我觉得理解的非常到位,接头就是实现的一种功能,一个派生类可以添加多个接口,这样对于派生类需要实现的功能来说就很方便了。
慕妹0111603
乱发问题吧
qq_G_10
抛出去
weibo_本宫li不矫情
我觉得应该是你创建项目的问题,可能你创建的项目类型不是控制台类型的,你再看看
qq_马竞不夺欧冠不改名_0
把你的代码贴出来吧,不知道你的类定义成什么样
丶Damon
当我们只想开放接口IClimbTree或者只需要调用IClimbTree中的方法,而不需要知道实现类Cat对象,这个时候就可以将Cat转为IClimbTree
慕少1096491
类使对象的模板 通过类可以实例化出对象 这样已经很完美了 但是如果设计基类却成了非常讲究技巧的事情 如果基类设计的过于繁重就会影响通用性 如果基类设计的过于简单 将会使代码变得复杂 此时就该接口出场了 接口往往代表着一种能力 推荐把接口明明城动词 比如说 定义一个基类叫动物 猫继承了动物 然后在定义接口吃/泡/叫等等 这样以后有什么其他的类出现了 比如外星人 可能并不是动物 但是他可能会跑 这样就能直接实现这个接口 最主要的使可以直接要求外星人跑 而不需要进行单独的处理 常见的应用也很多 比如,事件监听,事件捕获等等。 这样任何类只要实现了这个接口就代表着这个类实例化出来的对象有这个能力