有两个问题:1、既然接口方法已经在类Cat中实现了,那么直接通过对象调用 c.catchmice();不就可以实现抓老鼠的功能了吗?为什么还要把猫C强制转换成接口类型?2、既然接口方法必须在类中实现,哪和直接在类中定义方法有什么区别?例如,如果狗爬树也调用ClimbTree接口的话,是不是还得在狗的类里面再写一次爬树接口的函数体吗?
public class Cat : Pet,ICatchMice,IClimbTree
{
public Cat(string name):base(name) //构造函数
{
}
public override void Speak() //override 重写
{
Console.WriteLine(_name + " is speaking:" + "喵喵");
}
public void catchmice() //实现接口成员,既要声明且加上public 又要加上函数体
{
Console.WriteLine(_name + " had caught a mice!");
}
public void climbtree()
{
Console.WriteLine(_name + " is climbing a big tree!");
}
}
class Program
{
static void Main(string[] args)
{
//用基类类型的引用,可以方便不同子类的统一管理 ,例如利用一个容器(数组)保存所有的子类
Pet[] pets = new Pet[] { new Dog("喵喵"),new Cat("汪汪"),new Taidi("小三") };
for (int i=0;i<pets.Length;++i)
{
pets[i].Speak();
}
Cat c = new Cat("Tom");
//ICatchMice catchM = (ICatchMice)c;
//catchM.catchmice();
c.catchmice();
c.climbtree();
Console.ReadLine();
}
}