unity游戏开发-C#语言基础篇(面向对象-多态_抽象)

class Program
    {
        static void Main(string[] args)
        {
            NiaoClass niao = new NiaoClass(); 不能直接实例化抽象类
            YanZi yanzi = new YanZi();
            NiaoClass niao = yanzi;//通过引用子类的 实现抽象类的普通方法
            niao.Fei();//通过引用子类的 实现抽象类的普通方法

            NiaoClass niao = new YanZi();//用父类去实例 子类引用父类的方法;

            yanzi.MingJiao();
            yanzi.Eatting();
            niao.Eatting();
            yanzi.Fei();


            Dog dog = new Dog();//密封类不能被继承,不派生子类 可以实例化
            dog.Pao();



            Console.ReadKey();
        }
    }
   /// 
    /// 密封类-不能当做父类被继承;但可以作为子类去继承别的类 可以抽象方法;
    /// 
    sealed class Dog//密封类不能被继承,不派生子类 可以实例化  但可以作为子类继承别的父类 可以写抽象方法
    {
       public void Pao()
       {
           Console.WriteLine("狗跑le!");
       }
    }
 abstract class NiaoClass
    {
        private string name;
        private int age;
        private string sex;
        private int weight;
        private int height;

        public abstract int Weight
        {
            get;
            set;
        }



        public abstract string Name
        {

            set;
        }


        public int Age
        {
            get { return age; }
            set { age = value; }
        }


        public string Sex
        {
            get { return sex; }
            set { sex = value; }
        }

        public NiaoClass(string _name, int _age, string _sex)
        {
            this.name = _name;
            this.age = _age;
            this.sex = _sex;

        }

        public NiaoClass()
        { //加 abstract看看
            //构造函数不能被static 和 abstract 修饰
        }


        public abstract void MingJiao();//抽象类中的抽象的方法不能有方法体 就是没有大括号  不能设置为私有的 private 可以受保护的,protect 子类继承也要修改修饰符


        public void Fei()
        {

            Console.WriteLine("燕子飞了!!");
        }

        public static void Eat()
        {//加 abstract看看
            Console.WriteLine("鸟吃虫子!");
        }

        public abstract void Eatting();
    }
 class YanZi:NiaoClass
    {
        public override void MingJiao()
        {
            Console.WriteLine("燕子叫了:吱吱吱··");
        }


        public new void Fei()
        {

            Console.WriteLine("鸟飞了!!");
        }
        public override void Eatting()//属性可以抽象
        {
            Console.WriteLine("燕子吃到虫子了");
        }


        public override string Name
        {

            set
            {
                Name = value;
            }
        }

        public override int Weight
        {
            get
            {
                return Weight;
            }
            set
            {
                Weight = value;
            }
        }
    }

你可能感兴趣的:(unity游戏开发-C#语言基础篇(面向对象-多态_抽象))