对虚拟的看法


所属类别:.NET

文章作者:佚名

特别推荐:免费发布信息 承包关键词~~抢爆了!HOT!


 ★首先说说用词约定,虽然各位可能不接受我的用词,但为了避免书上般的很长的话,别无选择:类型<=>类型的概念比类广泛成员函数<=>包括方法、属性器和索引器【{ }】<=>函数体部分,指实现的代码,即{........},例如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四种修饰符不能两两并存

new和override不能并存 ★例如,继承顺序ABS→A→B→C→D,以下(注意右边的注释只能是对于4个同转换源的对象实体来说的:D d=new D();C c=d;B b=d;A a=d;ABS abs=d;):class abstract ABS{

abstract E();//是始员,自己没有{ },取了{....①....}}class A:ABS{

override E(){........}//改用了{....①....}

F(){........}//不变

 virtual G(){........}//改用了{....②....}}class B:A{

override E(){....①....}//是末员,不变

new F(){........}//不变

override G(){....②....}//是末员,不变}class C:B{

 new virtual E(){........}//是始员,改用{....③....}}class D:C{

 override E(){....③....}//是末员,不变} 关闭本页

相关信息

· JSP技术简介之三

· 巧用特殊文件防止局域网随意打印

· MessengerPlus轻松查MSN聊天记录

· 内核循环缓冲区数据结构在用户态的使用








....

86069 91716