继承(is与as)

is操作符用于检查对象和指定的类型是否兼容

as操作符主要用于二个对象之间的类型转换

 //父类
  public   class Animal
    {
      public int age;
    }

 //子类
   public class Cat:Animal
    {
       public string name;
       //无参构造
       public Cat()
       {

       }
       //有参构造
       public Cat(int age, string name)
       {
           this.age = age;
           this.name = name;
       }

}

 //子类
   public class Dog:Animal
    {
       public string color;
       //无参构造
       public Dog()
       {

        }
       //有参构造
       public Dog(int age, string color)
       {
           this.age = age;
           this.color = color;
       }
    }

   //测试类
      public  static void Main(string[] args)
        {
            List<Animal> list = new List<Animal>()  //范型集合
            {
                new Cat(15,"毛毛"),
                new Dog(10,"灰色")
            };

            foreach (Animal animal in list)
            {
                if(animal is Cat)
                {
                    Cat cat = (Cat)animal;   //类型强制转换
                    Console.WriteLine(cat.age + " "+cat.name);
                 }

                if (animal is Dog)   //is主要做类型判定
                {
                    //Dog dog = (Dog)animal;  //类型强制转换
                    Dog dog = animal as Dog; //as做类型转换
                    Console.WriteLine(dog.age + " "+dog.color);
                }
            }
            Console.ReadKey();
        }