一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

对虚拟的看法

时间:2008-01-12 编辑:简简单单 来源:一聚教程网

 ★首先说说用词约定,虽然各位可能不接受我的用词,但为了避免书上般的很长的话,别无选择:
类型<=>类型的概念比类广泛
成员函数<=>包括方法、属性器和索引器
【{ }】<=>函数体部分,指实现的代码,即{........},例如abstract成员函数和接口成员是没有{ }的
【先代】<=>基类型
【后代】<=>派生类型
【本代】<=>本类型
【签名】<=>同一类型中成员的签名是唯一的
【同签名】<=>不同代的成员但签名相同的
【先员】<=>同签名的【先代中定义】成员
【后员】<=>同签名的一个【后代中重定义】成员(而且这个后代要向上转换成本代!)
【始员】<=>在一个override成员函数的最后的一个virtual先员或abstract先员
【末员】<=>在一个成员函数的最先一个new virtual后员之前的最后一个override后员
【虚拟血脉】<=>对于一个非静态成员函数,其始员到末员之间的所有成员函数,我认为它实现了代码的"反向继承"
 ★以下是本人对虚拟的看法:
①virtual成员函数
        其{ }【尽量改用】末员的{ }
        是一个始员.开始第一段虚拟血脉
②override成员函数
        (访问性必须显式地与始员相同)
        (其最近一个先员必须是abstract或virtual或override的)
        其{ }【重定义了】始员的{ }
     但其{ }也是【尽量改用】末员的{ }
        
③abstract成员函数【本身没有{ }】,【必须取用】末员的{ }
        是一个始员,开始第一段虚拟血脉
        (有abstract成员函数的类型是abstract类,它不能被实例化和密封)
④new成员的在本代访问比先员【优先】(访问性可与先员不同)
        但本代可以通过全限定名来访问先员
⑤new virtual成员函数是一个始员,终止旧的虚拟血脉,开始一段新的虚拟血脉,这样就解决了Java中的版本问题
⑥不加继承修饰符就与先员同签名的成员,效果和new一样,但系统发出警告
⑦虚拟血脉上不允许静态
⑧接口成员隐式都是abstract的
⑨实现接口的abstract类可以将接口成员映射到abstract成员函数上
⑩在同一个成员声明中:
        static和override和virtual和abstract四种修饰符不能两两并存

热门栏目