°´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·ҳ£¬°´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ£¬°´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿£¡
¡ª¡ª¡ª¡ªÎ´ÔĶÁÍꣿ¼ÓÈëÊéÇ©ÒѱãÏ´μÌÐøÔĶÁ£¡
parameters£»¡¡as¡¡follows£º¡¡
Friend¡¡Class¡¡TaxEngine¡¡¡¡
¡¡¡¡¡¡¡¡Inherits¡¡BaseTaxEngine¡¡
¡¡¡¡¡¡¡¡Public¡¡Overrides¡¡Function¡¡CreateTaxAccount£¨£©¡¡As¡¡ITaxAccount¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Return¡¡New¡¡TaxAccount£¨Province¡£Ontario£»¡¡2008£©¡¡
¡¡¡¡¡¡¡¡End¡¡Function¡¡
End¡¡Class¡¡
¡¡¡¡¡¡¡¡¡¡In¡¡the¡¡implementation¡¡of¡¡CreateTaxAccount£¨£©£»¡¡the¡¡province¡¡Ontario¡¡and¡¡year¡¡2008¡¡are¡¡¡¡
assumed¡£¡¡Thus£»¡¡whenever¡¡TaxEngine¡¡is¡¡instantiated£»¡¡you¡¡need¡¡to¡¡make¡¡sure¡¡that¡¡the¡¡person¡¡is¡¡¡¡
in¡¡Ontario¡¡and¡¡paying¡¡taxes¡¡for¡¡the¡¡year¡¡2008¡£¡¡The¡¡implementation¡¡solves¡¡nothing¡¡and¡¡skirts¡¡¡¡
the¡¡issue¡¡of¡¡having¡¡to¡¡figure¡¡out¡¡how¡¡to¡¡deal¡¡with¡¡someone¡¡paying¡¡their¡¡taxes¡¡in¡¡British¡¡Columbia¡¡¡¡
and¡¡the¡¡year¡¡2009¡£¡¡
¡¡¡¡¡¡¡¡¡¡If¡¡you¡¡look¡¡at¡¡the¡¡implementation¡¡of¡¡TaxEngine£»¡¡you¡¡will¡¡notice¡¡it¡¡is¡¡short¡£¡¡One¡¡obvious¡¡solu
tion¡¡would¡¡be¡¡to¡¡create¡¡a¡¡TaxEngine¡¡type¡¡for¡¡each¡¡province¡¡and¡¡each¡¡year¡£¡¡Here¡¡are¡¡two¡¡examples£º¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡208¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
186¡¡¡¡¡¡¡¡¡¡¡¡CH¡¡AP¡¡T¡¡E¡¡R¡¡¡¡¡¡7¡¡¡¡¡¡¡ö¡¡¡¡¡¡¡¡L¡¡E¡¡A¡¡R¡¡N¡¡IN¡¡G¡¡¡¡¡¡AB¡¡OU¡¡T¡¡¡¡¡¡CO¡¡M¡¡P¡¡O¡¡N¡¡E¡¡N¡¡TS¡¡¡¡¡¡AN¡¡D¡¡¡¡C¡¡L¡¡AS¡¡S¡¡¡¡H¡¡I¡¡E¡¡R¡¡AR¡¡C¡¡H¡¡IE¡¡S¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Friend¡¡Class¡¡Ontario2008TaxEngine¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Inherits¡¡BaseTaxEngine¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Public¡¡Overrides¡¡Function¡¡CreateTaxAccount£¨£©¡¡As¡¡ITaxAccount¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Return¡¡New¡¡TaxAccount£¨Province¡£Ontario£»¡¡2008£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡Function¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡Class¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Friend¡¡Class¡¡BritishColumbia2009TaxEngine¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Inherits¡¡BaseTaxEngine¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Public¡¡Overrides¡¡Function¡¡CreateTaxAccount£¨£©¡¡As¡¡ITaxAccount¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Return¡¡New¡¡TaxAccount£¨Province¡£BritishColumbia£»¡¡2009£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡Function¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡Class¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡This¡¡solution¡¡is¡¡not¡¡that¡¡bad£»¡¡because¡¡to¡¡be¡¡able¡¡to¡¡instantiate¡¡the¡¡correct¡¡tax¡¡engine£»¡¡you¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡just¡¡need¡¡to¡¡define¡¡a¡¡factory¡¡that¡¡knows¡¡which¡¡class¡¡to¡¡instantiate¡£¡¡But¡¡for¡¡the¡¡problem¡¡at¡¡hand£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡this¡¡solution¡¡is¡¡extremely¡¡tedious£»¡¡as¡¡you¡¡could¡¡end¡¡up¡¡with¡¡hundreds£»¡¡if¡¡not¡¡thousands£»¡¡of¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡TaxEngine¡¡definitions¡£¡¡You¡¡would¡¡use¡¡the¡¡specific¡¡implementation¡¡approach¡¡when¡¡you¡¡have¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡fewer¡¡than¡¡a¡¡dozen¡¡variations¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡The¡¡better¡¡approach¡¡is¡¡to¡¡add¡¡an¡¡interface¡¡specific¡¡to¡¡the¡¡Canadian¡¡tax¡¡system¡£¡¡Think¡¡of¡¡it¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡as¡¡follows¡£¡¡When¡¡you¡¡are¡¡instantiating¡¡the¡¡tax¡¡engine£»¡¡you¡¡will¡¡need¡¡to¡¡know¡¡which¡¡tax¡¡system¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡to¡¡use¡£¡¡The¡¡factory¡¡protects¡¡you¡¡from¡¡needing¡¡to¡¡know¡¡which¡¡type¡¡to¡¡instantiate£»¡¡but¡¡there¡¡is¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡nothing¡¡wrong¡¡with¡¡giving¡¡some¡¡extra¡¡information¡¡that¡¡could¡¡be¡¡used¡¡by¡¡a¡¡factory¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Thus£»¡¡the¡¡solution¡¡is¡¡to¡¡define¡¡a¡¡new¡¡interface¡¡called¡¡ICanadaTaxEngine¡£¡¡The¡¡purpose¡¡of¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ICanadaTaxEngine¡¡is¡¡to¡¡add¡¡factory¡¡methods¡¡that¡¡are¡¡used¡¡to¡¡instantiate¡¡types¡¡with¡¡parameters¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡specific¡¡to¡¡the¡¡implementation¡£¡¡Following¡¡is¡¡the¡¡definition¡¡of¡¡the¡¡ICanadaTaxEngine¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Public¡¡Enum¡¡Province¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Alberta¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡BritishColumbia¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Manitoba¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡NewBrunswick¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡NewfoundlandLabrador¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡NovaScotia¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Nunavut¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Ontario¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡PrinceEdwardIsland¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Quebec¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Saskatchewan¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Yukon¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡Enum¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Public¡¡Interface¡¡ICanadaTaxEngine¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Function¡¡CreateTaxAccount£¨ByVal¡¡province¡¡As¡¡Province£»¡¡_¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ByVal¡¡year¡¡As¡¡Integer£©¡¡As¡¡ITaxAccount¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Function¡¡CreateCapitalGain£¨ByVal¡¡amount¡¡As¡¡Double£©¡¡As¡¡ITaxIne¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡Interface¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡209¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡CH¡¡AP¡¡T¡¡E¡¡R¡¡¡¡¡¡7¡¡¡¡¡¡¡ö¡¡¡¡¡¡¡¡L¡¡E¡¡AR¡¡N¡¡IN¡¡G¡¡¡¡¡¡AB¡¡O¡¡U¡¡T¡¡¡¡¡¡CO¡¡M¡¡P¡¡O¡¡N¡¡E¡¡N¡¡TS¡¡¡¡¡¡AN¡¡D¡¡¡¡¡¡C¡¡L¡¡AS¡¡S¡¡¡¡H¡¡I¡¡E¡¡R¡¡AR¡¡C¡¡HI¡¡E¡¡S¡¡187¡¡
¡¡¡¡¡¡¡¡¡¡The¡¡definition¡¡of¡¡ICanadaTaxEngine¡¡contains¡¡two¡¡additional¡¡methods£º¡¡
¡¡¡¡¡¡¡¡¡¡o¡¡CreateTaxAccount£¨£©¡¡is¡¡used¡¡to¡¡instantiate¡¡a¡¡tax¡¡account¡¡specific¡¡to¡¡a¡¡province¡¡and¡¡year¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡o¡¡CreateCapitalGain£¨£©¡¡is¡¡used¡¡to¡¡instantiate¡¡an¡¡ine¡¡using¡¡the¡¡Canadian¡¡capital¡¡gains¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡calculation¡£¡¡
¡¡¡¡¡¡¡¡¡¡Thus£»¡¡the¡¡implementation¡¡of¡¡TaxEngine¡¡bees¡¡the¡¡following¡£¡¡
Friend¡¡Class¡¡TaxEngine¡¡
¡¡¡¡¡¡¡¡Inherits¡¡BaseTaxEngine¡¡
¡¡¡¡¡¡¡¡Implements¡¡ICanadaTaxEngine¡¡
¡¡¡¡¡¡¡¡Public¡¡Overrides¡¡Function¡¡CreateTaxAccount£¨£©¡¡As¡¡ITaxAccount¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Return¡¡New¡¡TaxAccount£¨Province¡£Ontario£»¡¡2008£©¡¡
¡¡¡¡¡¡¡¡End¡¡Function¡¡
¡¡¡¡¡¡¡¡Public¡¡Overloads¡¡Function¡¡CreateTaxAccount£¨ByVal¡¡province¡¡As¡¡Province£»¡¡_¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ByVal¡¡year¡¡As¡¡Integer£©¡¡¡¡_¡¡¡¡
¡¡¡¡¡¡¡¡As¡¡ITaxAccount¡¡_¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Implements¡¡ICanadaTaxEngine¡£CreateTaxAccount¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Return¡¡New¡¡TaxAccount£¨province£»¡¡year£©¡¡
¡¡¡¡¡¡¡¡End¡¡Function¡¡
¡¡¡¡¡¡¡¡Public¡¡Function¡¡CreateCapitalGain£¨ByVal¡¡amount¡¡As¡¡Double£©¡¡As¡¡ITaxIne¡¡_¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Implements¡¡ICanadaTaxEngine¡£CreateCapitalGain¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Return¡¡New¡¡TaxIne£¨amount£»¡¡0¡£50£©¡¡
¡¡¡¡¡¡¡¡End¡¡Function¡¡
End¡¡Class¡¡
¡¡¡¡¡¡¡¡¡¡In¡¡the¡¡modified¡¡implementation¡¡of¡¡TaxEngine£»¡¡the¡¡class¡¡still¡¡derives¡¡from¡¡BaseTaxEngine£»¡¡¡¡
fulfilling¡¡the¡¡requirement¡¡of¡¡being¡¡a¡¡general¡¡tax¡¡engine¡£¡¡However£»¡¡for¡¡the¡¡additional¡¡require
ments¡¡of¡¡the¡¡Canadian¡¡tax¡¡system£»¡¡we¡¡implement¡¡the¡¡ICanadaTaxEngine¡¡interface¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡Defining¡¡a¡¡specific¡¡interface¡¡that¡¡implies¡¡a¡¡certain¡¡implementation¡¡is¡¡fine£»¡¡because¡¡the¡¡¡¡
specific¡¡interface¡¡is¡¡not¡¡bound¡¡to¡¡a¡¡certain¡¡implementation¡£¡¡The¡¡better¡¡way¡¡to¡¡understand¡¡¡¡
this¡¡implementation¡¡technique¡¡is¡¡to¡¡consider¡¡the¡¡specific¡¡interface¡¡as¡¡a¡¡characteristic¡¡that¡¡¡¡
an¡¡implementation¡¡is¡¡capable¡¡of¡¡supporting¡£¡¡This¡¡goes¡¡back¡¡to¡¡the¡¡shape¡¡example£»¡¡where¡¡a¡¡¡¡
square¡¡can¡¡support¡¡both¡¡the¡¡ISquare¡¡and¡¡IRectangle¡¡interfaces¡£¡¡¡¡
Using¡¡the¡¡Tax¡¡Engine¡¡
The¡¡last¡¡step¡¡is¡¡to¡¡use¡¡the¡¡tax¡¡engine¡¡to¡¡calculate¡¡some¡¡taxes¡£¡¡The¡¡following¡¡is¡¡an¡¡example¡¡of¡¡¡¡
calculating¡¡the¡¡taxes¡¡for¡¡Ontario¡¡in¡¡2008¡£¡¡
Dim¡¡engine¡¡As¡¡ITaxEngine¡¡=¡¡EngineCreator¡£CreateCanadianTaxEngine£¨£©¡¡
Dim¡¡canadaEngine¡¡As¡¡ICanadaTaxEngine¡¡=¡¡TryCast£¨engine£»¡¡ICanadaTaxEngine£©¡¡
Dim¡¡account¡¡As¡¡ITaxAccount¡¡=¡¡canadaEngine¡£CreateTaxAccount£¨Province¡£Ontario£»¡¡2008£©¡¡
Dim¡¡ine¡¡As¡¡ITaxIne¡¡=¡¡engine¡£CreateIne£¨100£©¡¡
Dim¡¡capitalGain¡¡As¡¡ITaxIne¡¡=¡¡canadaEngine¡£CreateCapitalGain£¨100£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡210¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
188¡¡¡¡¡¡¡¡¡¡¡¡CH¡¡AP¡¡T¡¡E¡¡R¡¡¡¡¡¡7¡¡¡¡¡¡¡ö¡¡¡¡¡¡¡¡L¡¡E¡¡A¡¡R¡¡N¡¡IN¡¡G¡¡¡¡¡¡AB¡¡OU¡¡T¡¡¡¡¡¡CO¡¡M¡¡P¡¡O¡¡N¡¡E¡¡N¡¡TS¡¡¡¡¡¡AN¡¡D¡¡¡¡C¡¡L¡¡AS¡¡S¡¡¡¡H¡¡I¡¡E¡¡R¡¡AR¡¡C¡¡H¡¡IE¡¡S¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡account¡£AddIne£¨ine£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡account¡£AddIne£¨capitalGain£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Dim¡¡deduction¡¡As¡¡ITaxDeduction¡¡=¡¡engine¡£CreateDeduction£¨20£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡account¡£AddDeduction£¨deduction£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Dim¡¡taxToPay¡¡As¡¡Double¡¡=¡¡engine¡£CalculateTaxToPay£¨account£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Console¡£WriteLine£¨¡¨Tax¡¡to¡¡pay¡¡£¨¡¨¡¡&¡¡taxToPay¡¡&¡¡¡¨£©¡¨£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Notice¡¡the¡¡definition¡¡of¡¡the¡¡variables¡¡engine¡¡and¡¡canadaEngine¡£¡¡This¡¡is¡¡fine£»¡¡because¡¡what¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡we¡¡are¡¡doing¡¡with¡¡the¡¡interfaces¡¡is¡¡choosing¡¡a¡¡characteristic¡¡that¡¡can¡¡be¡¡dynamically¡¡queried¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Learning¡¡More¡¡About¡¡Inheritance¡¡and¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Type¡¡Casting¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡This¡¡chapter¡¡introduced¡¡interfaces¡¡and¡¡ponents£»¡¡and¡¡delved¡¡deeper¡¡into¡¡inheritance¡£¡¡Here£»¡¡I¡¯ll¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡provide¡¡more¡¡details¡¡about¡¡inheritance¡¡and¡¡type¡¡casting¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡More¡¡Inheritance¡¡Details¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡In¡¡this¡¡section£»¡¡I¡¡am¡¡going¡¡to¡¡clearly¡¡lay¡¡out¡¡how¡¡inheritance¡¡works¡¡in¡¡Visual¡¡Basic¡£¡¡I¡¡will¡¡present¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡examples¡¡of¡¡usage¡¡for¡¡six¡¡scenarios¡£¡¡Each¡¡example¡¡is¡¡followed¡¡by¡¡a¡¡list¡¡explaining¡¡the¡¡key¡¡points¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡to¡¡understand¡£¡¡My¡¡goal¡¡is¡¡to¡¡illustrate¡¡all¡¡of¡¡the¡¡possible¡¡scenarios¡¡so¡¡that¡¡you¡¡have¡¡a¡¡reference¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡to¡¡how¡¡inheritance¡¡works¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡öNote¡¡¡¡All¡¡of¡¡the¡¡examples¡¡demonstrate¡¡using¡¡methods£»¡¡but¡¡it¡¡is¡¡possible¡¡to¡¡apply¡¡the¡¡same¡¡inheritance¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡techniques¡¡using¡¡properties¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Scenario¡¡1£º¡¡Overloading¡¡Base¡¡Class¡¡Functionality¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Class¡¡Base¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Public¡¡Sub¡¡Method£¨£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Console¡£WriteLine£¨¡¨Base¡£Method¡¨£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡Sub¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡Class¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Class¡¡Derived¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Inherits¡¡Base¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Pu