ÍøÂçѧԺ w3popÉçÇø ÍøÂç×ÊÔ´ ITÐÂÎÅ

w3pop.com :: ÍøÂçѧԺ :: ASP.NET :: C#ÖÐnewºÍoverrideÇø±ð

»áÔ±µÇ½

ÕʺÅ

ÃÜÂë

»Ø´ð

¼ÇסÃÜÂë

Íü¼ÇÃÜÂë? ×¢²á

ASP.NET
ASP.NET ½éÉÜ
ASP ºÍ ASP.NET Ö..
asp.netµÄ°²×°
asp.netµÄÍøÒ³
ASP.NET - ·þÎñÆ÷..
ASP.NET - ʼþ
ASP.NET Web ±íµ¥
ASP.NET ά³Öä¯ÀÀ..
ASP.NET - TextBo..
ASP.NET - °´Å¥¿Ø..
ASP.NET - Data B..
ASP.NET - The Ar..
ASP.NET - The Ha..
ASP.NET - The So..
ASP.NET - XML ÎÄ..
ASP.NET - Repeat..
ASP.NET - The Da..
ASP.NET - Databa..
ASP.NET 2.0 ÐÂÌØ..
ASP.NET 2.0 - Ma..

C#ÖÐnewºÍoverrideÇø±ð


×÷Õß:w3pop.com ·­Òë/ÕûÀí:w3pop.com ·¢²¼:2008-07-08 ä¯ÀÀ:1266 :: ::
¡¡¡¡ÔÚC#ÖÐʵÏÖÖØÐ´·½·¨£¬¿ÉÒÔÓÃnewºÍoverrideÁ½¸ö¹Ø¼ü×ÖÀ´ÊµÏÖ£¬¾¿¾¹ËûÃÇÖ®¼äÓÐÊ²Ã´Çø±ðÄØ£¿ÏÂÃæ£¬ÎÒÒÔÀý×ÓÀ´ËµÃ÷ËûÃÇÖ®¼äµÄ΢ÃîÇø±ð£º

public class GrandClass//»ùÀà
{
        public GrandClass()
        {
                Console.WriteLine("In GrandClass.Constructor");
        }
        public virtual void Method()//ÓÃvirtual²Å¿ÉÒÔÔÚ×ÓÀàÖÐÓÃoverride,¶ønew²»ÐèÒªÕâÑù
        {
                Console.WriteLine("In GrandClass.Method()");
        }
}

public class ParentClass:GrandClass//¼Ì³Ð»ùÀà,¿´¿´override״̬
{
        public ParentClass()
        {
                Console.WriteLine("In ParentClass.Constructor");
        }
        public override void Method()//ʹÓÃoverride,ÊÇ˵°Ñ»ùÀàµÄ·½·¨ÖØÐ¶¨Òå
        {
                Console.WriteLine("In ParentClass.Method() use override");
        }
}

public class NewParentClass:GrandClass//¼Ì³Ð»ùÀà,¿´¿´new״̬
{
        public NewParentClass()
        {
                Console.WriteLine("In NewParentClass.Constructor");
        }
        new public void Method()//ʹÓÃnew,²»ÊÇ˵Óõ½»ùÀàµÄ·½·¨,¶øÊÇÖØÐ¶¨ÒåÒ»¸ö×ÓÀà·½·¨,Ö»²»¹ý,·½·¨Ãû³ÆÓë»ùÀàÏàͬ
        {
                Console.WriteLine("In NewParentClass.Method()");
        }
}


¡¡¡¡ÏÂÃæµÄµ÷ÓôúÂë:


static void Main() 
{
        GrandClass Parent=(GrandClass)new ParentClass();//ÓÃoverride×ÓÀà¼Ó¿òÒ»¸ö»ùÀà¶ÔÏó¾ä±ú
        Parent.Method();
        GrandClass NewParent=(GrandClass)new NewParentClass();//ÓÃnew×ÓÀà¼Ó¿òÒ»¸ö»ùÀà¶ÔÏó¾ä±ú
        NewParent.Method();
        NewParentClass NewParent1=new NewParentClass();//Ò»¸ö×ÓÀà¾ä±ú
        NewParent1.Method();
}


¡¡¡¡½á¹ûÊÇÕâÑùµÄ:


[1]In GrandClass.Constructor
[2]In ParentClass.Constructor
[3]In ParentClass.Method() use override
[4]In GrandClass.Constructor
[5]In NewParentClass.Constructor
[6]In GrandClass.Method()
[7]In GrandClass.Constructor
[8]In NewParentClass.Constructor
[9]In NewParentClass.Method()


¡¡¡¡½á¹ûǰµÄÐòºÅÊÇÎÒ×Ô¼º¼ÓµÄ.ΪÁËÒÔϵķÖÎö:
¡¡¡¡[1],[2]Á½¾äÊÇGrandClass Parent=(GrandClass)new ParentClass();µÄ½á¹û.(×¢ÒâÒ»ÏÂ×ÓÀ๹½¨Æ÷Óë»ùÀ๹½¨Æ÷µÄ³õʼ»¯Ë³Ðò)
¡¡¡¡[3]ÊÇParent.Method();½á¹û.
¡¡¡¡[4],[5]Á½¾äÊÇGrandClass NewParent=(GrandClass)new NewParentClass();µÄ½á¹û.
¡¡¡¡[6]ÊÇNewParent.Method();µÄ½á¹û.
¡¡¡¡[7],[8]Á½¾äÊÇGrandClass NewParent1=(GrandClass)new NewParentClass();µÄ½á¹û.
¡¡¡¡[9]ÊÇNewParent1.Method();µÄ½á¹û.

¡¡¡¡ÕâÀïÎÒÃÇ¿ÉÒÔ¿´µ½,ͬÑùÊÇÓÃ×ÓÀàµÄ¶ÔÏó¹¹ÔìÒ»¸ö»ùÀà¾ä±ú.½á¹ûÈ´ºÜÃ÷ÏÔ,¿ÉÒÔ¿´µ½[3]ºÍ[6]µÄÇø±ð.[3]µ÷ÓÃÁË×ÓÀàµÄMethod(),¶ø[6]µ÷ÓÃÁË»ùÀàµÄMethod().
¡¡¡¡Õâ˵Ã÷,override¿ÉÒÔ¸²¸Ç»ùÀàµÄ·½·¨,ÈûùÀàµÄ·½·¨ÒÔ×ÓÀàµÄÄÚÈÝʵÏÖ,¶ønew²»ÓÃÀ´¸²¸Ç»ùÀàµÄ·½·¨,¶øÊÇȫж¨ÒåÒ»¸ö×ÓÀàµÄ·½·¨,Õâ¸ö·½·¨Ö»ÊôÓÚ×ÓÀà,Óë»ùÀàµÄ·½·¨ÎÞ¹Ø,Ö»ÊÇÃû×ÖÉÏÏàͬ¶øÒÑ.
¶øÕâÒ»Àý×ӵĻù´¡Êǽ¨Á¢ÔÚÓÃ×ÓÀà¶ÔÏó¼Ó¿ò³É»ùÀà¶ÔÏóµÄ,Ä¿µÄÊÇʵÏÖÓûùÀà¾ä±úµ÷ÓÃ×ÓÀà·½·¨,ÒÔʵÏÖÖØÔØµÄ¶àÐÎÐÔ.
¡¡¡¡Èç¹ûÏëµ÷ÓÃ×ÓÀàµÄnew·½·¨,ÓÃ×ÓÀàµÄ¾ä±ú(¾ø¶Ô²»ÄÜÓûùÀà¾ä±ú)À´µ÷ÓÃ.½á¹û[9]¿ÉÒÔ¿´³öÀ´.
¡¡¡¡ÓÃnewÊÇÔÚΪ×ÓÀඨÒå·½·¨Ãûʱ,ʵÔÚûÓа취¶¨Òå·½·¨ÃûµÄÇé¿ö²ÅÓë»ùÀàµÄ·½·¨Ïàͬ,µ«Õâ¸ö·½·¨Ö»ÔÚ×ÓÀàÖÐÆðµ½×÷ÓÃ,¶ø²»Ó°Ïì»ùÀàµÄ·½·¨.Ò²¾ÍÊÇ˵,new·½·¨¾ÍÊÇ×ÓÀàж¨ÒåµÄ·½·¨.ÓÃoverrideÊÇÖ±ÕýÒâÒåÉϵÄÖØÔØ.  

 

ÆÀÂÛ (0) All