c# abstract抽象類及抽象方法_繼承

wisdomone1發表於2012-03-08
//抽象類不能同時是密封的 
    //可包括抽象成員
    //不能直接例項化
    //必須是其它類的基類
    //抽象類可以繼承抽象類
    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();
        }
    }

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-718052/,如需轉載,請註明出處,否則將追究法律責任。

相關文章