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();
}
} 展开
{
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();
}
} 展开
3个回答
展开全部
这就是面向对象的多态的特性了,即父类引用指向子类实例(接口是特殊的抽像类)。(学C++的很容易理解其中的原理),这也是接口主要应用。即用接口来划分程序架构,这样的好处就是程序层次分明,统一标准,方便重构。如java容器的 servlet 2.0 其实它只是一套接口,而实现则有tomcat ,JBOSS 等等甚至你也可以开发自己的JAVA容器。。。面向对像是不分语言的,它只是一种思想,像C++ 它只有继承,没有接口这一说的,而JAVA 和C# 都是比C++更面向对象的,用接口表示like-a 关系,用继承来表示 is-a关系,其实面向对象思想熟悉之后就很容易理解了,接口用来规定必须实现的方法或继承则是注重属性和方法的重用。所以构建框架的时候多用接口,具体实现多用继承
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
ca是ClassA 类型的. ia是IA类型。两个类型不一致,当然不能给它赋值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
此处称之为隐式转换,具体是标识符隐式转换还是其他的我记不清了,就是如果一个变量实现某个接口,或者父类实现某个接口,或者父类的父类实现某个接口,以此类推,就可以直接转换而不需要写转换操作符
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询