当前位置:编程学习 > C#/ASP.NET >>

关于接口的问题

能不能帮忙看一段代码
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#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,