ÉèΪÊ×Ò³ ¼ÓÈëÊÕ²Ø

TOP

OOPÓïÑÔ¼¼Êõ±È½Ï£ºJava£¬C++£¬Object Pascal(ËÄ)
2014-11-24 01:15:22 ¡¾´ó ÖРС¡¿ ä¯ÀÀ:452´Î
Tags£ºOOP ÓïÑÔ ¼¼Êõ ±È½Ï Java Object Pascal
»òdynamicÒýÈ루ÕâÁ½¸ö¹Ø¼ü×ÖµÄÇø±ð½öÔÚÓÚ¼¼ÊõʵÏֵIJ»Í¬£©¡£ÔÚÅÉÉúÀàÖØж¨Òå·½·¨Ê±£¬Ó¦Ê¹ÓÃoverride¹Ø¼ü×Ö£¨ÕâÑù¾ÍÇ¿ÆȱàÒëÆ÷¼ì²é·½·¨ÉùÃ÷ÊÇ·ñÆ¥Å䣩¡£ÕâÊÇOPÖÐÌØÓеģ¬ËüÔÊÐíÔÚ»ùÀà×ö¸ü¶àµÄ¸Ä¶¯¡£


¡¤Java£ºÔÚJavaÖУ¬ËùÓеķ½·¨¶¼Ê¹ÓúóÆڰ󶨣¬³ý·ÇÄãʹÓÃfinal¹Ø¼ü×Ö¡£final·½·¨²»Äܱ»ÖØж¨Ò壬ÔÚµ÷ÓÃËÙ¶ÈÉϸü¿ì¡£ÔÚJavaÖÐÕýÈ·µÄ·½·¨Ãû³Æ¶ÔÓÚ¶à̬ÐÔµÄʵÏÖÊǷdz£ÖØÒªµÄ¡£JavaÖÐĬÈϺóÆڰ󶨺ÍC++ÖÐĬÈÏÇ°ÆÚ°ó¶¨ÕâÒ»ÊÂʵ±íÃ÷ÁËÕâÁ½ÖÖÓïÑÔ²»Í¬µÄÕë¶ÔÐÔ£ºC++ÓÐʱ»áÎþÉüOOPÄ£ÐÍÒÔ»ñÈ¡ÐÔÄܵÄÌáÉý¡£


¡¤×¢Ò⣺¹¹Ô캯ÊýºÍÎö¹¹º¯ÊýµÄºóÆڰ󶨡£ÓëÆäËüÁ½ÖÖÓïÑÔÏà·´£¬Object PascalÔÊÐí¶¨ÒåÐéÄâ¹¹Ô캯Êý¡£¶øÕâÈýÖÖÓïÑÔ¶¼Ö§³ÖÐéÄâÎö¹¹º¯Êý¡£


³éÏó·½·¨ºÍ³éÏóÀà
¡¤ÌØÐÔÃèÊö£ºµ±½¨Á¢Ò»¸ö¸´Ôӵļ̳ÐÁ´Ê±£¬ÎªÁËʵÏÖ¶à̬ÐÔ£¬¾­³£ÐèҪΪ¸ü¸ß¼¶µÄÀàÒýÈëһЩ·½·¨£¬ËäÈ»ÕâЩ·½·¨Î´±ØÊÇΪÕâ¸öÀà³éÏó¸ÅÄî¶ø¶¨ÒåµÄ¡£³ýÁËʹÓÿշ½·¨¶¨Ò壬Ðí¶àOOPÓïÑÔʵÏÖÁËÒ»ÖÖÌØÊâµÄ»úÖÆ£º¶¨Òå³éÏó·½·¨¡£Ëùν³éÏó·½·¨¾ÍÊÇûÓÐʵÏֵķ½·¨¡£¾ßÓÐÒ»¸ö»ò¶à¸ö³éÏó·½·¨µÄÀà³ÆΪ³éÏóÀà¡£


¡¤C++£ºÔÚC++ÖУ¬³éÏó·½·¨±»³ÆΪ´¿Ð麯Êý£¬Í¨¹ýÔÚ·½·¨¶¨ÒåºóÌí¼ÓËùνÐ鶨Òå·û£¨=0£©¿ÉÒÔ»ñµÃÒ»¸ö³éÏó·½·¨¡£³éÏóÀà¾ÍÊǾßÓУ¨»ò¼Ì³ÐÁË£©Ò»¸ö»ò¶à¸ö³éÏó·½·¨µÄÀà¡£²»ÄÜ´´½¨³éÏóÀà¶ÔÏó¡£


¡¤OP£ºObject PascalʹÓÃabstract¹Ø¼ü×ÖÉùÃ÷³éÏó·½·¨¡£Í¬Ñù£¬³éÏóÀà¾ÍÊǾßÓлò¼Ì³ÐÁ˳éÏó·½·¨µÄÀ࣬µ«ÊÇÄã¿ÉÒÔ´´½¨³éÏóÀàµÄʵÀý£¨ËäÈ»±àÒëÆ÷»á²úÉúÒ»¸ö¾¯¸æÐÅÏ¢£©¡£Õâ¾ÍÒþº¬Á˵÷ÓóéÏó·½·¨µÄΣÏÕ£¬ÔÚÔËÐÐÆÚ£¬ÕâÑù»á²úÉúÒ»¸öÔËÐÐÆÚ´íÎ󣬲¢»áÖÕÖ¹³ÌÐòµÄÔËÐС£


¡¤Java£ºÔÚJavaÖУ¬³éÏó·½·¨ºÍ³éÏóÀ඼ÓÃabstract¹Ø¼ü×ÖÉùÃ÷£¨ÊÂʵÉÏJavaÖеijéÏóÀà±ØÐë¾ßÓгéÏó·½·¨£¬ºÃÏñÓÐÒ»µã¶àÓࣩ¡£Í¬Ñù£¬ÅÉÉúÀàÈç¹ûûÓÐÖØж¨ÒåËùÓеijéÏó·½·¨£¬±ØÐëʹÓÃabstract¹Ø¼ü×Ö¶¨ÒåΪ³éÏóÀà¡£²»ÄÜ´´½¨³éÏóÀàµÄʵÀý¡£


¶àÖؼ̳кͽӿÚ
¡¤ÌØÐÔÃèÊö£ºÒ»Ð©OOPÓïÑÔÔÊÐí´Ó¶à¸ö»ùÀàÅÉÉúÐÂÀà¡£ÁíһЩÓïÑÔÖ»ÔÊÐí´ÓÒ»¸öÀàÖÐÅÉÉúÐÂÀ࣬µ«ÊÇ¿ÉÒÔ´Ó¶à¸ö½Ó¿Ú£¨»òÕß´¿³éÏóÀֻ࣬ÓÉ´¿Ð麯Êý¹¹³ÉµÄÀࣩÅÉÉúÐÂÀà¡£


¡¤C++£ºC++ÊÇÈýÖÖÓïÑÔÖÐΨһ֧³Ö¶àÖؼ̳еġ£Ò»Ð©³ÌÐòÔ±ÈÏΪÕâÊÇÒ»¼þºÃÊ£¬ÁíһЩ³ÌÐòÔ±ÈÏΪÕâÊÇÒ»¼þ»µÊ£¬ÎÒ²»Ïë¹ý¶àµÄÌÖÂÛÕâ¸öÎÊÌâ¡£¶àÖؼ̳вúÉúÁ˺ܶàиÅÄ±ÈÈç˵Ðé»ùÀ࣬ËäÈ»¹¦ÄÜÇ¿´ó£¬µ«²¢²»ºÃÕÆÎÕ¡£C++ûÓнӿڵĸÅÄËäÈ»ËüÓë¶àÖؼ̳еĴ¿³éÏóÀà¸ÅÄî½Ó½ü£¨½Ó¿Ú¿ÉÒÔ¿´×÷¶àÖؼ̳еÄ×Ó¼¯£©¡£


¡¤Java£ºJava£¬ÒÔ¼°Object Pascal£¬¶¼²»Ö§³Ö¶àÖؼ̳У¬µ«ÊÇÍêÈ«Ö§³Ö½Ó¿Ú¡£½Ó¿ÚµÄ·½·¨Ö§³Ö¶à̬ÐÔ£¬²¢ÇÒµ±ÐèÒªÒ»¸ö½Ó¿Ú¶ÔÏóʱ£¬¿ÉÒÔͨ¹ýÒ»¸ö¶ÔÏóʵÏÖ½Ó¿Ú¡£Ò»¸öÀàÖ»Äܼ̳Ð×ÔÒ»¸ö»ùÀ࣬µ«¿ÉÒÔimplement£¨¹Ø¼ü×Ö£©¶à¸ö½Ó¿Ú¡£JavaµÄ½Ó¿ÚÓëCOMÄ£Ðͷdz£ÎǺϣ¬ËäȻûÓÐÔ¤ÏȵĿ¼ÂÇ¡£¾Ù¸öÀý×Ó£º


public interface CanFly {
public void Fly();
}
public class Bat extends Animal implements CanFly {
public void Fly( ) { // the bat flies¡­ }
}


¡¤OP£ºDelphi 3ÔÚObject PascalÖÐÒýÈëÁËÀàËÆJavaµÄ½Ó¿Ú£¬ÕâЩ½Ó¿Ú·Ç³£ÎǺÏCOM£¨ËäÈ»¼¼ÊõÉϾ­³£ÔÚ·ÇCOM³ÌÐòÖÐʹÓã©¡£½Ó¿Ú¹¹ÔìÁËÒ»¸öÓëÀà¶ÀÁ¢µÄ¼Ì³ÐÁ´£¬µ«ÊÇÓëJavaÒ»Ñù£¬Ò»¸öÀà¿ÉÒԼ̳Ð×ÔΨһµÄ»ùÀಢʵÏÖ¶à¸ö½Ó¿Ú¡£½«ÀàµÄ·½·¨Ó³ÉäΪÀàʵÏֵĽӿڵķ½·¨ÊÇObject PascalÓïÑÔÖÐÁîÈËÃÔ»óµÄ¼¸¸öÎÊÌâÖеÄÒ»¸ö¡£


RTTI
¡¤ÌØÐÔÃèÊö£ºÔÚÇ¿ÀàÐÍOOPÓïÑÔÖУ¬±àÒëÆ÷Íê³ÉËùÓÐÀàÐͼì²éµÄ¹¤×÷£¬ËùÒÔºÜÉÙÐèÒªÔËÐгÌÐò±£´æÀàÐ͵ÄÐÅÏ¢¡£È»¶ø£¬Ä³Ð©Çé¿öÏÂÐèҪijЩÀàÐÍÐÅÏ¢¡£Òò´Ë£¬ÕâÈýÖÖOOPÓïÑÔ¶¼»ò¶à»òÉÙµÄÖ§³ÖÔËÐÐÆÚÀàÐÍʶ±ð/ÐÅÏ¢£¨RTTI£©¡£


¡¤C++£º×î³õµÄC++ÓïÑÔ²»Ö§³ÖRTTI¡£ºóÀ´Í¨¹ýdynamic_castµÄ·½Ê½ÌṩÁ˲¿·ÖµÄÀàÐÍÐÅÏ¢¡£Äã¿ÉÒÔ²éѯһ¸ö¶ÔÏóµÄÀàÐÍ£¬Ò²¿ÉÒÔ¼ì²éÁ½¸ö¶ÔÏóÊÇ·ñ¾ßÓÐÏàͬµÄÀàÐÍ¡£


¡¤OP£ºObject PascalÒÔ¼°ËüµÄ¿ÉÊÓ¿ª·¢»·¾³Ö§³ÖÒ²ÐèÒª´óÁ¿µÄRTTI¡£²»½ö¿ÉÒÔ½øÐÐÀàÐͼì²é£¨Ê¹ÓÃisºÍas²Ù×÷·û£©£¬ÀàҲΪËüµÄpublished³ÉÔ±Éú³É´óÁ¿µÄRTTI¡£ÊÂʵÉÏÕâ¸ö¹Ø¼ü×Ö¸ºÔ𲿷ÖRTTIµÄÉú³É¡£ÊôÐÔ¡¢Á÷½á¹¹£¨´°ÌåÎļþÒÔ¼°Ê¼ÓÚ¶ÔÏó¹Û²ìÆ÷µÄDelphi»·¾³ºÜ´ó³Ì¶ÈÉÏÒÀÀµÓÚÀàµÄRTTI¡£TObjectÀà¾ßÓÐClassNameºÍClassType·½·¨¡£ClassType·½·¨·µ»ØÒ»¸öÀàÀàÐͱäÁ¿¡ª¡ªÒ»¸öÌØÊâÀà²Î¿¼ÀàÐ͵ÄʵÀý£¨²¢²»ÊÇÀà±¾Éí£©¡£


¡¤Java£ººÍObject PascalÒ»Ñù£¬JavaÖÐÒ²ÓÐÒ»¸ö»ùÀàÓÃÓÚ¸ú×ÙÀàÐÍÐÅÏ¢¡£ObjectÀàµÄgetClass()·½·¨»á·µ»ØÒ»¸öÔªÀࣨһ¸öÓÃÓÚÃèÊöÀàµÄÀàÐ͵ĶÔÏ󣩣¬ÄãÒ²¿ÉÒÔʹÓÃgetName()º¯Êý»ñµÃÒ»¸öÀàÃû×Ö·û´®¡£Ä㻹¿ÉÒÔʹÓÃinstanceof²Ù×÷·û¡£Java 1.0²»Ö§³Ö¸ü¶àÄÚÈݵÄRTTI£¬µ«ÔÚδÀ´µÄ°æ±¾ÖпÉÄÜ»á¸Ä±ä£¬ÒÔÊÊÓ¦¿ÉÊÓ»·¾³ºÍ×é¼þµÄ¿ª·¢£¨ËùνJava Beans£©¡£


¡¤Àý×Ó£º


// C++
Dog* MyDog = dynamic_cast (myAnimal);
// Java
Dog MyDog = (Dog) myAnimal;
// Object Pascal
Dog myDog := myAnimal as Dog;


Òì³£´¦Àí
¡¤ÌØÐÔÃèÊö£ºÒì³£´¦Àí¹¹ÏëµÄ³ö·¢µãÊǼò»¯³ÌÐòµÄ´íÎó´¦Àí´úÂ룬Ìṩ±ê×¼ÄÚ½¨»úÖÆ£¬´Ó¶øʹ³ÌÐò¸ü¼Ó½¡×³¡£Òì³£´¦ÀíµÄÄÚÈݺܶ࣬ÕâÀïÎÒÖ»ÊǼòÊöһЩ¹Ø¼üµÄÒªËغÍÇø±ð¡£


¡¤C++£ºC++ʹÓÃthrow¹Ø¼ü×ÖÀ´²úÉúÒ»¸öÒì³££¬ÓÃtry¹Ø¼ü×Ö±êÖ¾±»±£»¤µÄ³ÌÐò¿é£¬ÓÃcatch¹Ø¼ü×Ö±êÖ¾Òì³£´¦Àí³ÌÐò´úÂë¡£Òì³£ÊÇһЩÌØÊâÀàµÄ¶ÔÏó£¬ÔÚÕâÈýÖÖÓïÑÔÖж¼¹¹³ÉÁ˸÷×Եļ̳ÐÁ´¡£C++»á¶ÔËùÓÐÕ»ÖеĶÔÏó½øÐÐÕ»Õ¹¿ªºÍÏú»Ù£¨µ÷ÓÃÎö¹¹º¯Êý£©¡£


¡¤OP£ºObject PascalʹÓÃÓëC++ÀàËƵĹؼü×Öraise£¬tryºÍexcept£¬²¢ÇÒ¾ßÓÐÀàËƵŦÄÜ¡£Î¨Ò»ÕæÕýµÄÇø±ðÊÇÒòΪûÓжÔÏó»á±»´´½¨ÓÚÕ»ÖУ¬ËùÒÔ²»»á·¢ÉúÕ»Õ¹¿ª¡£ÁíÍ⣬Äã¿ÉÒÔʹÓÃÒ»¸öfinally¹Ø¼ü×Ö£¬±êÖ¾ÄÇЩÎÞÂÛÊÇ·ñ²úÉúÒì³£¶¼±»Ö´ÐеĴúÂë¡£ÔÚDelphiÖУ¬Òì³£ÀàÈ«²¿ÅÉÉú×ÔException¡£


¡¤Java£ºJavaʹÓúÍC++ÏàͬµÄ¹Ø¼ü×Ö£¬µ«ÊÇÆäÐÐΪȴ¸ü½Ó½üÓÚObject Pascal£¬°üÀ¨Ê¹ÓÃfinally¹Ø¼ü×Ö¡£ËùÓвÉÓöÔÏóÒýÓÃÄ£Ð͵ÄÓïÑÔ»ù±¾¶¼ÊÇÈç´Ë¡£ËéƬ»ØÊÕ³ÌÐòµÄ´æÔÚÏÞÖÆÁËfinally¹Ø¼ü×Ö¶ÔÀàµÄÓ¦Óã¬ÕâЩÀ಻½öÕ¼ÓÃÁËÄÚ´æ×ÊÔ´¡£JavaÈÏΪËùÓÐÄܲúÉúÒì³£µÄº¯Êý¶¼¾ßÓÐÒ»¸öÕýÈ·µÄÒì³£×Ӿ䣬Õâ¸ö×Ó¾ä¸æËßJavaÄÄЩÒì³£¿ÉÄܻᱻ²úÉú¡£Õâ¸ö¼ÙÉèÊ®·ÖÑϸñ£¬²¢ÓɱàÒëÆ÷½øÐмì²é¡£ÕâÊÇÒ»¸ö·Ç³£ÓÐÓõļ¼Êõ£¬¼´Ê¹ÕâÒâζ×ųÌÐòÔ±Òª×ö¸ü¶àµÄ¹¤×÷¡£JavaÖеÄÒì³£Àà±ØÐëÅÉÉú×ÔThrowableÀà¡£


Ä£°å£¨Í¨ÓóÌÐòÉè¼Æ£©
¡¤ÌØÐÔÃèÊö£ºÔÚ²»Ö¸¶¨Ä³Ð©Êý¾ÝÀàÐ͵ÄÇé¿öϱàдº¯ÊýºÍÀàµÄ¼¼Êõ£¬³ÆΪͨÓóÌÐòÉè¼Æ¡£ÔÚº¯Êý»òÀ౻ʹÓõÄʱºò£¬Ìض¨µÄÊý¾ÝÀàÐÍ»á´úÌ溯Êý»òÀàÖеÄδָ¶¨²¿·Ö¡£ËùÓÐÇé¿ö¶¼ÔÚ±àÒëÆ÷µÄ¼à¹Ü֮ϣ¬²»»áÓÐÈκÎÎÊÌâÒÅÁô¸øÔËÐÐÆÚÀ´¾ö¶¨¡£Ä£°åÀàµÄÒ»¸öµäÐ͵ÄÀý×Ó¾ÍÊÇÈÝÆ÷Àà¡£


¡¤C++£ºÕâÈýÖÖÓïÑÔÖÐÖ»ÓÐC++¾ßÓÐͨÓÃÀàºÍº¯Êý£¬ÕâЩÀàºÍº¯ÊýÓÃT

Ê×Ò³ ÉÏÒ»Ò³ 1 2 3 4 5 ÏÂÒ»Ò³ βҳ 4/5/5
¡¾´ó ÖРС¡¿¡¾´òÓ¡¡¿ ¡¾·±Ìå¡¿¡¾Í¶¸å¡¿¡¾Êղء¿ ¡¾ÍƼö¡¿¡¾¾Ù±¨¡¿¡¾ÆÀÂÛ¡¿ ¡¾¹Ø±Õ¡¿ ¡¾·µ»Ø¶¥²¿¡¿
ÉÏһƪ£ºDisigenPatternÉè¼Æģʽ ÏÂһƪ£ºÃæÊÔ¾­Àú(20):ǧÏ𻥶¯Ã¨ÆË

×îÐÂÎÄÕÂ

ÈÈÃÅÎÄÕÂ

Hot ÎÄÕÂ

Python

C ÓïÑÔ

C++»ù´¡

´óÊý¾Ý»ù´¡

linux±à³Ì»ù´¡

C/C++ÃæÊÔÌâÄ¿