下载此文档

深入剖析csharp继承机制.doc


文档分类:法律/法学 | 页数:约16页 举报非法文档有奖
1/16
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/16 下载此文档
文档列表 文档介绍
深入剖析C#继承机制 1概述 1二、C#的继承规则 3三、访问与隐藏基类成员 4(一)访问基类成员 4(二)隐藏基类成员 6四、多级继承 10五、继承与访问修饰符 11深入剖析C#继承机制天雨概述 继承就是在类之间建立一种相交关系,使得新定义的派生类的实例可以继承已有的基类的特征和能力。 为了提高软件模块的可复用性和可扩充性,以便提高软件的开发效率,我们总是希望能够利用前人或自己以前的开发成果,同时又希望在自己的开发过程中能够有足够的灵活性,不拘泥于复用的模块。C#这种完全面向对象的程序设计语言提供了两个重要的特性--继承性inheritance和多态性polymorphism。继承是面向对象程序设计的主要特征之一,它可以让您重用代码,可以节省程序设计的时间。继承就是在类之间建立一种相交关系,使得新定义的派生类的实例可以继承已有的基类的特征和能力,而且可以加入新的特性或者是修改已有的特性建立起类的新层次。现实世界中的许多实体之间不是相互孤立的,它们往往具有共同的特征也存在内在的差别。人们可以采用层次结构来描述这些实体之间的相似之处和不同之处。图1类图上图反映了交通工具类的派生关系。最高层的实体往往具有最一般最普遍的特征,越下层的事物越具体,并且下层包含了上层的特征。它们之间的关系是基类与派生类之间的关系。为了用软件语言对现实世界中的层次结构进行模型化,面向对象的程序设计技术引入了继承的概念。一个类从另一个类派生出来时,派生类从基类那里继承特性。派生类也可以作为其它类的基类。从一个基类派生出来的多层类形成了类的层次结构。注意:C#中,派生类只能从一个类中继承。这是因为,在C++中,人们在大多数情况下不需要一个从多个类中派生的类。从多个基类中派生一个类这往往会带来许多问题,从而抵消了这种灵活性带来的优势。C#中,派生类从它的直接基类中继承成员:方法、域、属性、事件、索引指示器。除了构造函数和析构函数,派生类隐式地继承了直接基类的所有成员。看下面示例:usingSystem;classVehicle//定义交通工具(汽车)类{protectedintwheels;//公有成员:轮子个数protectedfloatweight;//保护成员:重量publicVehicle(){;}publicVehicle(intw,floatg){wheels=w;weight=g;}publicvoidSpeak(){("交通工具的轮子个数是可以变化的!");}};classCar:Vehicle//定义轿车类:从汽车类中继承{intpassengers;//私有成员:ar(intw,floatg,intp):base(w,g){wheels=w;weight=g;passengers=p;}}Vehicle作为基类,体现了"汽车"这个实体具有的公共性质:汽车都有轮子和重量。Car类继承了Vehicle的这些性质,并且添加了自身的特性:可以搭载乘客。二、C#的继承规则 1、继承是可传递的。如果C从B中派生,B又从A中派生,那么C不仅继承了B中声明的成员,同样也继承了A中的成员。Object类作为所有类的基类。 2、派生类应当是对基类的扩展。派生类可以添加新的成员,但不能除去已经继承的成员的定义。 3、构造函数和析构函数不能被继承。除此以外的其它成员,不论对它们定义了怎样的访问方式,都能被继承。基类中成员的访问方式只能决定派生类能否访问它们。 4、派生类如果定义了与继承而来的成员同名的新成员,就可以覆盖已继承的成员。但这并不因为这派生类删除了这些成员,只是不能再访问这些成员。 5、类可以定义虚方法、虚属性以及虚索引指示器,它的派生类能够重载这些成员,从而实现类可以展示出多态性。 6、派生类只能从一个类中继承,可以通过接吕实现多重继承。下面的代码是一个子类继承父类的例子:usingSystem;lassParentClass{publicParentClass(){("父类构造函数。");}publicvoidprint(){("I'maParentClass。");}}lassChildClass:ParentClass{hildClass(){("子类构造函数。");}publicstaticvoidMain(){ChildClasschild=newChildClass();();}}程序运行输出: 父类构造函数。子类构造函数。I'maParentClass。上面的一个类名为ParentClass,main函数中用到的类名为ChildClass。要做的是

深入剖析csharp继承机制 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数16
  • 收藏数0 收藏
  • 顶次数0
  • 上传人wxc6688
  • 文件大小90 KB
  • 时间2020-02-23