关于接口的问题
能不能帮忙看一段代码object obj1 = new Bird();
if (obj1 is Runnable)
{
Console.WriteLine("可以飞");
Runnable r2 = (Runnable)obj1;
r2.Walk();
Runnable r3 = obj1 as Runnable;
r3.Walk();
}
public interface Runnable
{
void Walk();
}
public interface Flyable
{
void Fly();
}
public class Bird : Flyable, Runnable//"实现接口",“继承类”
{
public void Fly()
{
Console.Write("小鸟飞");
}
public void Walk()
{
Console.WriteLine("蹦跶的");
}
我想问的是为何Runnable r2 = (Runnable)obj1把obj1转换为Runnable的类型后调用walk方法却是调用的Bird类中的walk方法。 --------------------编程问答-------------------- 父类引用指向子类对象,如果子类中没有重写该方法的话,就调用父类的,否则调用子类的。
但是要实现接口,就必须实现其所有方法。当然就调用子类的方法类。
因为接口中的方法只有一个签名,根本没办法调用,所以要求子类必须全部实现。
补充:.NET技术 , C#