|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
asp对于服务器的要求较高,一般的服务器如果访问量一大就垮了,不得不重启。承继内容导航
1、承继基本常识
2、C#的承继划定规矩
三.会见与埋没基类成员
4、多级承继
5、承继与会见润色符
一.承继基本常识
为了进步软件模块的可复用性和可扩大性,以便进步软件的开辟效力,我们老是但愿可以使用后人或本人之前的开辟功效,同时又但愿在本人的开辟过程当中可以有充足的天真性,不拘泥于复用的模块。C#这类完整面向工具的程序计划言语供应了两个主要的特征--承继性inheritance和多态性polymorphism。
承继是面向工具程序计划的次要特性之一,它可让您重用代码,能够节俭程序计划的工夫。承继就是在类之间创建一种订交干系,使得新界说的派生类的实例能够承继已有的基类的特性和才能,并且能够到场新的特征大概是修正已有的特征创建起类的新条理。
实际天下中的很多实体之间不是互相伶仃的,它们常常具有配合的特性也存在内涵的不同。人们能够接纳条理布局来形貌这些实体之间的类似的地方和分歧的地方。
类图
上图反应了交通工具类的派生干系。最高层的实体常常具有最一样平常最广泛的特性,越上层的事物越详细,而且上层包括了下层的特性。它们之间的干系是基类与派生类之间的干系。
为了用软件言语对实际天下中的条理布局举行模子化,面向工具的程序计划手艺引进了承继的观点。一个类从另外一个类派生出来时,派生类从基类那边承继特征。派生类也能够作为别的类的基类。从一个基类派生出来的多层类构成了类的条理布局。
注重:C#中,派生类只能从一个类中承继。这是由于,在C++中,人们在年夜多半情形下不必要一个从多个类中派生的类。从多个基类中派生一个类这常常会带来很多成绩,从而抵消了这类天真性带来的上风。
C#中,派生类从它的间接基类中承继成员:办法、域、属性、事务、索引唆使器。除机关函数和析构函数,派生类隐式地承继了间接基类的一切成员。看上面示例:
usingSystem;
classVehicle//界说交通工具(汽车)类
{
protectedintwheels;//私有成员:轮子个数
protectedfloatweight;//回护成员:分量
publicVehicle(){;}
publicVehicle(intw,floatg){
wheels=w;
weight=g;
}
publicvoidSpeak(){
Console.WriteLine("交通工具的轮子个数是能够变更的!");
}
};
classCar:Vehicle//界说轿车类:从汽车类中承继
{
intpassengers;//公有成员:搭客数
publicCar(intw,floatg,intp):base(w,g)
{
wheels=w;
weight=g;
passengers=p;
}
}
Vehicle作为基类,表现了"汽车"这个实体具有的大众性子:汽车都有轮子和分量。Car类承继了Vehicle的这些性子,而且增加了本身的特征:能够搭载搭客
2、C#中的承继切合以下划定规矩:
1、承继是可传送的。假如C从B中派生,B又从A中派生,那末C不但承继了B中声明的成员,一样也承继了A中的成员。Object类作为一切类的基类。
2、派生类应该是对基类的扩大。派生类能够增加新的成员,但不克不及撤除已承继的成员的界说。
3、机关函数和析构函数不克不及被承继。除此之外的别的成员,不管对它们界说了如何的会见体例,都能被承继。基类中成员的会见体例只能决意派生类可否会见它们。
4、派生类假如界说了与承继而来的成员同名的新成员,就能够掩盖已承继的成员。但这其实不由于这派生类删除这些成员,只是不克不及再会见这些成员。
5、类能够界说虚办法、虚属性和虚索引唆使器,它的派生类可以重载这些成员,从而完成类能够展现出多态性。
6、派生类只能从一个类中承继,能够经由过程接吕完成多重承继。
上面的代码是一个子类承继父类的例子:
usingSystem;
publicclassParentClass
{
publicParentClass()
{Console.WriteLine("父类机关函数。");}
publicvoidprint()
{Console.WriteLine("ImaParentClass。");}
}
publicclassChildClass:ParentClass
{
publicChildClass()
{Console.WriteLine("子类机关函数。");}
publicstaticvoidMain(){
ChildClasschild=newChildClass();
child.print();
}
}
程序运转输入:
父类机关函数。子类机关函数。ImaParentClass。
下面的一个类名为ParentClass,main函数顶用到的类名为ChildClass。要做的是创立一个利用父类ParentClass现有代码的子类ChildClass。
1.起首必需申明ParentClass是ChildClass的基类。
这是经由过程在ChildClass类中作出以下申明来完成的:"publicclassChildClass:ParentClass"。在派生类标识符前面,用分号":"来标明前面的标识符是基类。C#仅撑持单一承继。因而,你只能指定一个基类。
2.ChildClass的功效几近同等于ParentClass。
因而,也能够说ChildClass"就是"ParentClass。在ChildClass的Main()办法中,挪用print()办法的了局,就考证这一点。该子类并没有本人的print()办法,它利用了ParentClass中的print()办法。在输入了局中的第三行能够失掉考证。
3.基类在派生类初始化之前主动举行初始化。ParentClass类的机关函数在ChildClass的机关函数之前实行
三.会见与埋没基类成员
(1)会见基类成员
经由过程base关头字会见基类的成员:
挪用基类上已被其他办法重写的办法。
指定创立派生类实例时应挪用的基类机关函数。
基类会见只能在机关函数、实例办法或实例属性会见器中举行。
从静态办法中利用base关头字是毛病的。
示例:上面程序中基类Person和派生类Employee都有一个名为Getinfo的办法。经由过程利用base关头字,能够从派生类中挪用基类上的Getinfo办法。
usingSystem;
publicclassPerson
{
protectedstringssn="111-222-333-444";
protectedstringname="张三";
publicvirtualvoidGetInfo(){
Console.WriteLine("姓名:{0}",name);
Console.WriteLine("编号:{0}",ssn);
}
}
classEmployee:Person
{
publicstringid="ABC567EFG23267";
publicoverridevoidGetInfo(){
//挪用基类的GetInfo办法:
base.GetInfo();
Console.WriteLine("成员ID:{0}",id);
}
}
classTestClass{
publicstaticvoidMain(){
EmployeeE=newEmployee();
E.GetInfo();
}
}
程序运转输入:
姓名:张三
编号:111-222-333-444
成员ID:ABC567EFG23267
示例:派生类同基类举行通讯。
usingSystem;
publicclassParent
{
stringparentString;
publicParent()
{Console.WriteLine("ParentConstructor.");}
publicParent(stringmyString){
parentString=myString;
Console.WriteLine(parentString);
}
publicvoid</p>因为ASP脚本语言非常简单,因此其代码也简单易懂,结合HTML代码,可快速地完成网站的应用程序。还无法完全实现一些企业级的功能:完全的集群、负载均横。 |
|