c# abstract抽象类及抽象方法_继承

//抽象类不能同时是密封的 
    //可包括抽象成员
    //不能直接实例化
    //必须是其它类的基类
    //抽象类可以继承抽象类
    abstract class Team
    {
        public abstract void G();//抽象类中的抽象方法;仅含有声明没有方法体;且以;分号结束

    }
    class sun : Team //如果继承了抽象类的类是实体类,它必须实现抽象基类的抽象方法,即father.G
    {
        private string _c;
        //abstract或extern表明可以不用声明方法体
        public void Find(string c)
        {
            this._c = c;

        }
        //对抽象基类的抽象方法必须进行重写override方可实现其真正使用
        public override void G()
        {
            Console.WriteLine("类sun实现了抽象基类的抽象方法G");
        }

    }


 static void Main(string[] args)
        {
            //sun t1 = new Team();//不能直接创建抽象类或接口的实例
            sun s1 = new sun();
            s1.G();
            Console.ReadKey();
        }








namespace learnindexindicator
{
    //抽象类不能同时是密封的 
    //可包括抽象成员
    //不能直接实例化
    //必须是其它类的基类
    //抽象类可以继承抽象类
    abstract class Team
    {
        public abstract void G();//抽象类中的抽象方法;仅含有声明没有方法体;且以;分号结束

    }

    //抽象类继承抽象类时,可以不用实现其父级抽象类的抽象方法
    //抽象类可以包括实体方法和抽象方法
    abstract class SubTeam:Team
    {
        public void ShutDown()
        {
             Console.WriteLine("抽象类中的非抽象方法");
        }
    }
    class sun : Team //如果继承了抽象类的类是实体类,它必须实现抽象基类的抽象方法,即father.G
    {
        private string _c;
        //abstract或extern表明可以不用声明方法体
        public void Find(string c)
        {
            this._c = c;

        }
        //对抽象基类的抽象方法必须进行重写override方可实现其真正使用
        public override void G()
        {
            Console.WriteLine("类sun实现了抽象基类的抽象方法G");
        }

    }

    class Three : SubTeam
    {
        public override void G()
        {
            Console.WriteLine("在实体类多级继承抽象类时实现了抽象类的抽象方法G");
        }
    }
}



class Program
    {
        static void Main(string[] args)
        {
            //sun t1 = new Team();//不能直接创建抽象类或接口的实例
            sun s1 = new sun();
            s1.G();
            Console.ReadKey();

            Console.WriteLine("---------------------------");
            Three sub1 = new Three();
            sub1.G();//实体类继承抽象父类的抽象方法的重写
            sub1.ShutDown();//实体类的继承BASE父类的实体方法shutdown
            Console.ReadKey();
        }
    }













//抽象类不能同时是密封的 
    //可包括抽象成员
    //不能直接实例化
    //必须是其它类的基类
    //抽象类可以继承抽象类
    abstract class Team
    {
        public abstract void G();//抽象类中的抽象方法;仅含有声明没有方法体;且以;分号结束

    }

    //抽象类继承抽象类时,可以不用实现其父级抽象类的抽象方法
    //抽象类可以包括实体方法和抽象方法
    abstract class SubTeam:Team
    {
        public void ShutDown()
        {
             Console.WriteLine("抽象类中的非抽象方法");
        }
    }
    class sun : Team //如果继承了抽象类的类是实体类,它必须实现抽象基类的抽象方法,即father.G
    {
        private string _c;
        //abstract或extern表明可以不用声明方法体
        public void Find(string c)
        {
            this._c = c;

        }
        //对抽象基类的抽象方法必须进行重写override方可实现其真正使用仅在继承时才可用override和sealed
        //测试override和sealed的组合,如无sealed,是否在子类可重写方法
        public override    void G()
        {
            Console.WriteLine("类sun实现了抽象基类的抽象方法G");
        }

    }

    class sunof1 : sun
    {
        public override void G()
        {
            base.G();
            Console.WriteLine("类sunof1重写了sun类的G方法");
        }

        
    }





    class Three : SubTeam
    {
        public override void G()
        {
            Console.WriteLine("在实体类多级继承抽象类时实现了抽象类的抽象方法G");
        }
    }
}






    class Program
    {
        static void Main(string[] args)
        {
            //sun t1 = new Team();//不能直接创建抽象类或接口的实例
            sun s1 = new sun();
            s1.G();
            Console.ReadKey();

            Console.WriteLine("---------------------------");
            Three sub1 = new Three();
            sub1.G();//实体类继承抽象父类的抽象方法的重写
            sub1.ShutDown();//实体类的继承BASE父类的实体方法shutdown
            Console.ReadKey();

            sunof1 so1 = new sunof1();
            so1.G();
            Console.ReadKey();
        }
    }
请使用浏览器的分享功能分享到微信等