继承类中是否存在完全相同的字段?

//抽象类 无法被实例化
    public abstract class Animal        
    {
        public abstract void ShowType(); //抽象类中的抽象函数不能被实现 

        public void SayHello() { Console.WriteLine("Hello"); }  //抽象类里的普通函数可以被实现
    }

    public class Bird : Animal
    {
        public string type = "Bird";
        //public string type;
        public override void ShowType()
        {
            Console.WriteLine("Type is {0}", type);
        }
    }

    public class Chicken : Bird
    {
        public string type = "Chicken";   //运行到子类的type字段的时候 程序会先检查一下 是否其继承的父类 含有同名字段 如果有,则优先执行父类的同名字段
        public override void ShowType()
        {
            Console.WriteLine("Type is {0}", type);
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            //Animal a = new Animal();  //抽象类本身 无法被实例化,不能在堆的内存中分配存储空间(不能new一个Animal的对象)
           // Animal a1 = new Chicken();  //但抽象类 可以被其子类给实例化
           // Animal a = new Bird();      //而且抽象类 可以被其多重子类给实例化

             Bird bird = new Chicken();
           // Bird bird = new Bird();
            Chicken c = new Chicken();
            Console.WriteLine("c" + c.type);
            //在两个继承关系的类中  如果子类 父类含有同名 同类型的字段,编译时 系统会自动给它们以区分,所以不存在完全相同的字段
            Console.WriteLine(bird.type);  //输出结果为bird  
            //Console.WriteLine();
           // bird.ShowType();          //输出结果为Type is Chicken 
            Console.ReadLine();
        }
    }

 

posted @ 2013-03-24 00:09  SilverSky(Jason)  阅读(403)  评论(0)    收藏  举报