仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 498|回复: 9
打印 上一主题 下一主题

[学习教程] ASP编程:深切分析C#承继机制(1)

[复制链接]
简单生活 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 23:36:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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代码,可快速地完成网站的应用程序。还无法完全实现一些企业级的功能:完全的集群、负载均横。
简单生活 该用户已被删除
沙发
 楼主| 发表于 2015-1-20 10:29:26 | 只看该作者
它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。
小妖女 该用户已被删除
板凳
发表于 2015-1-27 22:25:56 | 只看该作者
下面简单介绍一下我学习ASP的方法,希望对想学习ASP的朋友有所帮助...
分手快乐 该用户已被删除
地板
发表于 2015-2-5 10:33:36 | 只看该作者
代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。
小女巫 该用户已被删除
5#
发表于 2015-2-11 09:00:07 | 只看该作者
最近在学asp,不要问我为什么不直接学.net,因为公司网站是asp做的所以有这个需要,卖了本书asp入门到精通,对里面的六大内置对象老是记不住,还有很多属性和方法看的头晕。
再现理想 该用户已被删除
6#
发表于 2015-3-2 07:46:59 | 只看该作者
他的语法和设计思路和VB完全相同,导致很多ASP的书都留一句“相关内容请参考VB的相关教材....”更糟糕的是,相当多的ASP教程混合了Javascript,VBscript等等脚本语言,搞的初学者。
莫相离 该用户已被删除
7#
发表于 2015-3-11 02:28:27 | 只看该作者
如何更好的使自己的东西看上去很不错等等。其实这些都不是问题的实质,我们可以在实践中不断提升自己,不断充实自己。
飘飘悠悠 该用户已被删除
8#
发表于 2015-3-17 19:08:32 | 只看该作者
最近在学asp,不要问我为什么不直接学.net,因为公司网站是asp做的所以有这个需要,卖了本书asp入门到精通,对里面的六大内置对象老是记不住,还有很多属性和方法看的头晕。
灵魂腐蚀 该用户已被删除
9#
发表于 2015-3-17 19:08:29 | 只看该作者
从事这个行业,那么你可以学ASP语言,简单快速上手,熟练dreamweav排版,写asp代码,熟练photoshop处理图片,打好基础就行了
透明 该用户已被删除
10#
发表于 2015-3-24 20:25:48 | 只看该作者
接下来就不能纸上谈兵了,最好的方法其实是实践。实践,只能算是让你掌握语言特性用的。而提倡做实际的Project也不是太好,因为你还没有熟练的能力去综合各种技术,这样只能使你自己越来越迷糊。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-24 00:03

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表