C#基础-036 类的继承

来源:互联网 发布:淘客cms系统是什么 编辑:程序博客网 时间:2024/05/16 11:06

父类:

class Animal    {        private string name;        private int age;        private char gender;        //公有的属性是可以被继承的        public string Name        {            get            {                return name;            }            set            {                name = value;            }        }        public int Age        {            get            {                return age;            }            set            {                age = value;            }        }        public char Gender        {            get            {                return gender;            }            set            {                gender = value;            }        }        //子类在继承父类的时候 父类中的无参构造一定要显示的写出来   因为在实例化子类的时候          //在父类中为什么要显示的写出来无参构造?        //在类中如果出现了构造方法  那么就会把隐式的无参构造给覆盖掉        public Animal()        {        }        //构造方法是不能被继承的        //所有公有的方法是可以被继承的  说法是错误的        //因为构造方法不可以被继承        public Animal(string name, int age, char gender)        {            this.name = name;            this.age = age;            this.gender = gender;        }        //公有的方法可以被继承        public override string ToString()        {            return string.Format("名字:{0},年龄{1},性别:{2}", Name, Age, Gender);        }    }

子类1:

 //class  子类:父类{}  这样就形成了继承关系    class Cat:Animal    {        public Cat()        {        }        public Cat(string name)        {            this.Name = name;        }        //base  维系了父子类之间的继承关系        public Cat(string name, int age, char gender):base(name, age, gender)        {        }    }

子类2:

 class Dog:Animal    {        public Dog()//无参构造        {        }        public Dog(string name, int age, char gender)        {            this.Name = name;            this.Age = age;            this.Gender = gender;        }    }

主程测试:

static void Main(string[] args)        {            Animal[] animals = new Animal[5];            animals[0] = new Dog("小黑",1,'公');            animals[1] = new Cat("小白", 1, '母');            animals[2] = new Dog("小灰", 1, '母');            animals[3] = new Cat("小花", 1, '公');            animals[4] = new Dog("小纯", 1, '母');            for (int i = 0; i < animals.Length; i++)            {                //is 关键字                //is不会将对象直接进行转化 会在转化之前 进行一次判断 如果类型匹配则返回true                //类型不匹配 则返回false  然后需要根据返回值进行适当操作                bool ret = animals[i] is Dog;                if (ret)                {                    ((Dog)animals[i]).Bark();                }                else                {                    ((Cat)animals[i]).Bark();                }                 //as 关键字                //as 可以将animals[i]直接转化 转化成功  返回一个Dog实例 否则返回null                //Dog dog = animals[i] as Dog;                //if (dog != null)                //{                //    dog.Bark();                //}                //Cat cat = animals[i] as Cat;                //if (cat != null)                //{                //    cat.Bark();                //}            }        }
原创粉丝点击