一个很简单的c#接口问题,但是我弄混了,题目如下

一个很简单的c#接口问题,但是我弄混了,题目如下namespaceConsoleApplication1{classProgram{staticvoidMain(stri... 一个很简单的c#接口问题,但是我弄混了,题目如下
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
IVoice iV = new Cat();
iV.Voice();

//Cat cA = iV as Cat;
//cA.Food();
//Console.ReadKey();

IFavoriteFood iF = iV as IFavoriteFood;
iF.Food();
Console.ReadKey();

}
}

interface IFavoriteFood
{
void Food();
}

interface IVoice
{
void Voice();
}

class Cat : IFavoriteFood, IVoice
{
public void Food()
{
Console.WriteLine("我喜欢的食物是老鼠.");
}
public void Voice()
{
Console.WriteLine("喵,喵,喵...");
}
}
}
我想问的是上面的注释部分和注释下面的部分对于实现Food()这个方法有什么不同之处?求详细解答
展开
 我来答
amwih001
2015-10-23 · TA获得超过2.3万个赞
知道大有可为答主
回答量:1529
采纳率:100%
帮助的人:657万
展开全部
区别不大, 一个是用类对象(cA变量)的形式接收变量, 一个是用接口对象(iF变量)的形式接收变量,
用接口形式接收则只能调用这个接口里面的成员,

当然, 标准的OOP写法都是返回接口, 也就是用接口对象(iF变量)接收变量.

其实现实中, 我们也经常用类对象(cA变量)的形式类接收, 楼主不必纠结这个.
追问
这两种方法都不用重新开辟内内存吗
追答
不用的,只是拿源对象做转换了
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式