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();
        }
    }
   /// <summary>
    /// 密封类-不能当做父类被继承;但可以作为子类去继承别的类 可以抽象方法;
    /// </summary>
    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;
            }
        }
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容