2010-03-11 09:28:43| ·ÖÀࣺ ¡¢C Sharp| | ±êÇ©£º |×ֺŴóÖÐС ¶©ÔÄ
˵Ã÷1£º
±íʾ¾²Ì¬µÄ¹Ø¼ü×Ö
˵Ã÷´Ë¶ÔÏóÔÚÓ¦ÓÃÖÐÖ»´æÔÚÒ»·Ý
˵Ã÷2£º
C# ÊÇÃæÏò¶ÔÏóµÄ³ÌÐòÉè¼ÆÓïÑÔ£¬Ã¿Ò»¸öº¯Êý¶¼ÊôÓÚÒ»¸öÀà¡£
µ±Ò»¸ö·½·¨±»ÉùÃ÷ΪStaticʱ£¬Õâ¸ö·½·¨ÊÇÒ»¸ö¾²Ì¬·½·¨£¬±àÒëÆ÷»áÔÚ±àÒëʱ±£ÁôÕâ¸ö·½·¨µÄʵÏÖ¡£Ò²¾ÍÊÇ˵£¬Õâ¸ö·½·¨ÊôÓÚÀ࣬µ«ÊDz»ÊôÓÚÈκγÉÔ±£¬²»¹ÜÕâ¸öÀàµÄʵÀýÊÇ·ñ´æÔÚ£¬ËüÃǶ¼»á´æÔÚ¡£¾ÍÏñÈë¿Úº¯ÊýStatic void Main£¬ÒòΪËüÊǾ²Ì¬º¯Êý£¬ËùÒÔ¿ÉÒÔÖ±½Ó±»µ÷Óá£
µ±Ò»¸ö·½·¨±»ÉùÃ÷ΪVirtualʱ£¬ËüÊÇÒ»¸öÐéÄâ·½·¨£¬Ö±µ½ÄãʹÓÃClassName variable = new ClassName();ÉùÃ÷Ò»¸öÀàµÄʵÀý֮ǰ£¬Ëü¶¼²»´æÔÚÓÚÕæÊµµÄÄÚ´æ¿Õ¼äÖС£Õâ¸ö¹Ø¼ü×ÖÔÚÀàµÄ¼Ì³ÐÖзdz£³£Óã¬ÓÃÀ´ÌṩÀà·½·¨µÄ¶à̬ÐÔÖ§³Ö¡£
ÀýÈ磬ÓÐÒ»¸öÀàTest£¬TestÀàÓµÓÐÁ½¸ö·½·¨Hello()ºÍgreet()£º
public class test
{}
.....
}
ÀàTestMeÅÉÉú×ÔÀàTest£¬ÄÇôµ±ÄãʹÓÃÈçϵĴúÂ룺
Test a = new TestMe();
´´½¨Ò»¸öTestMeÀàµÄÐÂʵÀýºó£¬¼ÙÈçÄãÊÔͼִÐÐÈçϵĴúÂ룺
a.Hello();
ÄÇô£¬×ÔÈ»¾Í»áÔËÐлùÀàTestµÄHello()·½·¨£¬µ«ÊÇÈç¹ûÄãÏë¸øÓèÅÉÉúÀàTestMeÒ»¸öËü×Ô¼ºµÄHello()·½·¨£¬Äã¾ÍÒªÔÚTestÀàÖн«Hello()·½·¨ÉùÃ÷ΪÐéÄâµÄ:
public virtual void Hello()
{}
È»ºóÔÚÅÉÉúÀàÖÐÒÔoverride¹Ø¼ü×Ö±íʾ¸²¸Ç»ùÀàµÄ·½·¨£º
public class TestMe : Test
{}
....
}
Õâʱµ÷ÓÃa.Hello()£¬¾Í»á³öÏÖ¡°hello from TestMe class!!!¡±×ÖÑù£¬¶ø²»ÊÇ¡°Hello£¬world!¡±ËµÃ÷»ùÀàµÄ·½·¨ÒѾ±»¸²¸ÇÁË¡£Õâ¾ÍÊǶà̬ÐԵıíÏÖ¡£
´ÓÉÏÃæ²»ÄÑ¿´³ö£¬Ò»¸ö¾²Ì¬µÄ·½·¨ÊÇÕæÊµ´æÔڵ쬶øÒ»¸öÐéÄâ·½·¨¿ÉÒÔ±»ÅÉÉúÀàÖØÐ´£¬Õâ¶þÕßÊdzåÍ»µÄ£¬Æäʵ¶ÔÓÚÒ»¸ö·½·¨£¬C#¹æ¶¨Ö»ÄÜʹÓÃÏÂÃæÕâЩÏÞ¶¨·ûÖеÄÒ»¸ö£º
override virtual static abstract sealed
´ú±íµÄº¬Òå·Ö±ðΪ£º
ÖØÔØº¯Êý¡¢ÐéÄ⺯Êý¡¢¾²Ì¬º¯Êý¡¢³éÏóº¯Êý¡¢Ãܷ⺯Êý£¨²»¿ÉÅÉÉú£©
ÁíÍ⣬C#Öж¨ÒåÒ»¸ö·½·¨µÄÉùÃ÷Ϊ£º
¿É¼ûÐÔ ÀàÐÍ ·µ»ØÖµ ·½·¨Ãû£¨²ÎÊýÁÐ±í£©{}
ÀýÈç
public static void Test(int a){}
ÕâÊÇÒ»¸ö¹«Óеľ²Ì¬º¯Êý£¬º¯ÊýÃûΪTest£¬ÎÞ·µ»ØÖµ£¬ÓÐÒ»¸öÕûÐβÎÊýa£¬×÷ÓÃÊǰÑaµÄÖµÊä³öÔÚÆÁÄ»ÉÏ¡£
˵Ã÷3£º
±ÈÈçÓÐÀà
class a
{}
}
ºÍÀà
class b
{}
void function2()
{}
}
Èç¹ûҪʹÓÃfunction1µÄʱºò£¬Ö±½ÓʹÓÃÀàÃûa.function1()¾Í¿ÉÒÔÁË,Èç¹ûҪʹÓÃfunction2()µÄ»°ÐèÒª¶Ôb½øÐй¹½¨Ò»¸ö¶ÔÏó Ò²¾ÍÊÇ£ºb haha = new b(),È»ºóhaha.function2()£¬¿ÉÒÔÕâÑù½øÐÐʹÓã¬
Ò²¾ÍÊÇ˵¶ÔÓÚstaticÐÞÊιýµÄ·½·¨»òÕßÊôÐÔ£¬¶ÔÓÚËùÓеĸÃÀàµÄ¶ÔÏó¶¼Ö»ÓÐÏàͬµÄÒ»¸ö£¬¶øÃ»ÓÐÐÞÊιýµÄÔò±íʾ£¬¶ÔÓÚ²»Í¬µÄ¶ÔÏ󣬻áÓв»Í¬µÄÊôÐÔ£¬±ÈÈ粻ͬµÄÈËÓв»Í¬µÄÃû×Ö£¬Éí¸ßµÈ¡£
˵Ã÷4£º
public static ×îºÃÒ»¸öÈË¿ª³µ
public ¿ÉÒԺܶàÈËÒ»Æð¿ª³µ
===========================
new Óë overrideµÄÇø±ð
ÒýÓÃAnyTao²©¿ÍÖеÄÒ»¾ä»°:
¸²Ð´£¨override£©ÓëÖØÔØ£¨overload£©£¬ÊdzɾÍ.NETÃæÏò¶ÔÏó¶àÌ¬ÌØÐԵĻù±¾¼¼ÊõÖ®Ò»
ÕýÈçÄ³ÍøÓÑ˵µÄÄÇÒ»¾ä»°:
Override ¸²Ð´ ¾ÍÊǰÑÔÀ´µÄ»»µôÁË
new Ð嵀 ¾ÍÊÇÁ½¸ö¹²´æ×Å
ʹÓÃoverrideÖØÐ´xx·½·¨,ͨ¹ý¸¸ÀàÒýÓÃÒ»ÑùÖ»ÄÜ¿´µ½ÖØÐ´ºóµÄ·½·¨;
Èç¹ûʹÓÃnewÒþ²Øxx·½·¨,¸¸Àà×ÓÀàÒýÓø÷×Ô¶ÔÓ¦·½·¨;
overrideÖØÐ´Ðé·½·¨,ÄÇô¾ÍֻʣÏÂÖØÐ´ÒÔºóµÄ·½·¨;
newÒþ²Ø»ùÀàµÄ·½·¨,ÄÇô»ùÀàµÄ·½·¨ºÍµ±Ç°ÀàµÄ·½·¨Í¬Ê±´æÔÚÖ»ÊDZ»Òþ²ØÁË;
ʹÓÃoverrideÐÞÊηûÖ÷ÒªÓÃÀ´Ð޸ķ½·¨¡¢ÊôÐÔ¡¢Ë÷ÒýÆ÷»òʼþ¡£ÖØÐ´»ù·½·¨±ØÐëÓëÖØÐ´·½·¨¾ßÓÐÏàͬµÄÃû³Æ¡£
²»ÄÜÖØÐ´·ÇÐé·½·¨»ò¾²Ì¬·½·¨¡£ÖØÐ´»ù·½·¨±ØÐëÊÇÐéÄâµÄ¡¢³éÏóµÄ»òÖØÐ´µÄ¡£
ÖØÐ´ÉùÃ÷²»Äܸü¸ÄÐé·½·¨µÄ¿É·ÃÎÊÐÔ¡£ÖØÐ´·½·¨ºÍÐé·½·¨±ØÐë¾ßÓÐÏàͬµÄ·ÃÎʼ¶ÐÞÊηû¡£ÀýÈ磺Ðé·½·¨ÎªpublicµÄ£¬ÖØÐ·½·¨Ò²±ØÐëÊÇpublicµÄ¡£
²»ÄÜʹÓÃÏÂÁÐÐÞÊηûÐÞ¸ÄÖØÐ´·½·¨£º
new static virtual abstract
ÖØÐ´ÊôÐÔÉùÃ÷±ØÐëָдÓë¼Ì³ÐÊôÐÔÍêÈ«ÏàͬµÄ·ÃÎÊÐÞÊηû¡¢ÀàÐͺÍÃû³Æ£¬²¢ÇÒÖØÐ´ÊôÐÔ±ØÐëÊÇÐéÄâµÄ¡¢³éÏóµÄ»òÊÇÖØÐ´µÄ¡£
ÒªÇ󣺣¨ÈýÏàͬ£©
1¡¢·½·¨Ãû³ÆÏàͬ
2¡¢²ÎÊýÁбíÏàͬ
3¡¢·µ»ØÖµÀàÐÍÏàͬ
Ò»¾ä»°£¬Ö»ÐèÒªÖØÐÂд·½·¨ÄÚ²¿µÄÄÚÈÝ£¡
,override¿ÉÒÔ¸²¸Ç»ùÀàµÄ·½·¨,ÈûùÀàµÄ·½·¨ÒÔ×ÓÀàµÄÄÚÈÝʵÏÖ,¶ønew²»ÓÃÀ´¸²¸Ç»ùÀàµÄ·½·¨,¶øÊÇȫж¨ÒåÒ»¸ö×ÓÀàµÄ·½·¨,Õâ¸ö·½·¨Ö»ÊôÓÚ×ÓÀà,Óë»ùÀàµÄ·½·¨ÎÞ¹Ø,Ö»ÊÇÃû×ÖÉÏÏàͬ¶øÒÑ
ÏÈ¿´abstractºÍoverrideʹÓ÷½·¨
abstract class Base
{}
public virtual void outwork()
{}
Public abstract void Pay(); //ÉùÃ÷³éÏó·½·¨£¬±ØÐëÒª±»×ÓÀànew »ò override;Ö»Óе±ÀàÊÇabstractʱ²Å¿ÉÒÔÉùÃ÷abstract·½·¨
}
class Employee : Base
{}
public override void outwork() //¸²Ð´³éÏó·½·¨£¨Ò»¶¨ÒªÔÚ×ÓÀาд¸¸ÀàµÄ³éÏó·½·¨£©
{}
}
//²âÊÔ´úÂë