对虚拟的看法

发布时间: 2007-05-21 09:44    作者: 未知    来源: 未知    浏览:    评论

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

TAG

Smile Big Smile Surprise Stick out tongue Wink Sad Tongue Tied Indifferent Crying Embarrassed Cool Angry Angel Devil [8-|] [:#] [:-*] [:^)] [<:o)] [|-)] Yes Beer Left Hug Music Star Time Snail Pizza Automobile Umbrella Computer Storm [mo] [8o|] [^o)] [+o(] [*-)] [8-)] Coffee No Drinks [Z] Right Hug Cake Broken Heart Gift Wilted Flower Movie Dog Idea Sleep Email Travel Paradise
呢称:

加粗 斜体 下划线 链接 图片 代码 邮件地址 引用 列表

最多只能输入100个字符

Tags

SQL 数据库 asp.net C# XML 控件 .NET教程 程序 事件 数据 安全 代码 Server 客户端 验证 数据库专栏 接口 文件 Oracle DataSet 函数 DataGrid 问题 .net return C#语言 JavaScript 服务 IIS 对象 语句 windows 继承 时间 web.config 设计 开发 参数 变量 解决 字符 ADO.net 环境 VB.Net语言 web 异常 工具 服务器 计算 实例 OLEDB Application VB Word WebService insert asp net 安装 记录

精华推荐

更多

精品下载

更多