C#接口调用问题

interfaceIA{voidplay();}classClassA:IA{voidIA.play(){Console.WriteLine("调用play方法");}}... interface IA
{
void play();
}
class ClassA:IA
{
void IA.play()
{
Console.WriteLine("调用play方法");
}
}
class Program
{

static void Main(string[] args)
{
ClassA ca = new ClassA();
IA ia = ca;//这个地方没有强制转换IA ia = (IA)ca 怎么没出错!不是向上转换么?
ia.play();
Console.Read();
}
}
展开
 我来答
星知魂
2010-07-02 · TA获得超过685个赞
知道小有建树答主
回答量:761
采纳率:0%
帮助的人:581万
展开全部
这就是面向对象的多态的特性了,即父类引用指向子类实例(接口是特殊的抽像类)。(学C++的很容易理解其中的原理),这也是接口主要应用。即用接口来划分程序架构,这样的好处就是程序层次分明,统一标准,方便重构。如java容器的 servlet 2.0 其实它只是一套接口,而实现则有tomcat ,JBOSS 等等甚至你也可以开发自己的JAVA容器。。。面向对像是不分语言的,它只是一种思想,像C++ 它只有继承,没有接口这一说的,而JAVA 和C# 都是比C++更面向对象的,用接口表示like-a 关系,用继承来表示 is-a关系,其实面向对象思想熟悉之后就很容易理解了,接口用来规定必须实现的方法或继承则是注重属性和方法的重用。所以构建框架的时候多用接口,具体实现多用继承
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友e829334c0
2010-07-02 · TA获得超过473个赞
知道小有建树答主
回答量:1066
采纳率:0%
帮助的人:824万
展开全部
ca是ClassA 类型的. ia是IA类型。两个类型不一致,当然不能给它赋值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
草薙在
2010-07-02 · TA获得超过4795个赞
知道大有可为答主
回答量:6187
采纳率:50%
帮助的人:6239万
展开全部
此处称之为隐式转换,具体是标识符隐式转换还是其他的我记不清了,就是如果一个变量实现某个接口,或者父类实现某个接口,或者父类的父类实现某个接口,以此类推,就可以直接转换而不需要写转换操作符
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式