仓酷云

标题: ASP.NET网页编程之[你必需晓得的.NET] 第二回:对笼统编程:接口和笼统类仓酷云 ... [打印本页]

作者: 金色的骷髅    时间: 2015-1-18 11:25
标题: ASP.NET网页编程之[你必需晓得的.NET] 第二回:对笼统编程:接口和笼统类仓酷云 ...
你觉得学习.NET怎么样,我懂的少,问的可能很幼稚,见笑了啊:)系列文章目次索引:《你必需晓得的.NET
本文将先容以下内容:

•面向对象头脑:多态
•接口
•笼统类
1.弁言
在我之前的一篇post《笼统类和接口的谁是谁非》中,和同事管伟的会商,失掉良多伴侣的存眷,由于是不成系统的论道,以是给人人懂得形成方便,同时关于这个主题的体系性实际,我以为也有需要做以总结,因而才有了本篇的奇怪出炉。同时,我将把上贴中的成绩特地也在此做以交卸。
2.观点引进

接口是包括一组虚办法的笼统范例,个中每种办法都有其称号、参数和前往值。接口办法不克不及包括任何完成,CLR同意接口能够包括事务、属性、索引器、静态办法、静态字段、静态机关函数和常数。可是注重:C#中不克不及包括任何静态成员。一个类能够完成多个接口,当一个类承继某个接口时,它不但要完成该接口界说的一切办法,还要完成该接口从其他接口中承继的一切办法。
界说办法为:


publicinterfaceSystem.IComparable
{
intCompareTo(objecto);
}

publicclassTestCls:IComparable
{
publicTestCls()
{
}

privateint_value;
publicintValue
{
get{return_value;}
set{_value=value;}
}

publicintCompareTo(objecto)
{

//利用as形式举行转型判别
TestClsaCls=oasTestCls;
if(aCls!=null)
{

//完成笼统办法
return_value.CompareTo(aCls._value);
}
}
}
笼统类供应多个派生类共享基类的大众界说,它既能够供应笼统办法,也能够供应非笼统办法。笼统类不克不及实例化,必需经由过程承继由派生类完成其笼统办法,因而对笼统类不克不及利用new关头字,也不克不及被密封。假如派生类没有完成一切的笼统办法,则该派生类也必需声明为笼统类。别的,完成笼统办法由overriding办法来完成。
界说办法为:

///<summary>
///界说笼统类
///</summary>
abstractpublicclassAnimal
{
//界说静态字段
protectedint_id;

//界说属性
publicabstractintId
{
get;
set;
}

//界说办法
publicabstractvoidEat();

//界说索引器
publicstringthis[inti]
{
get;
set;
}
}

///<summary>
///完成笼统类
///</summary>
publicclassDog:Animal
{
publicoverrideintId
{
get{return_id;}
set{_id=value;}
}

publicoverridevoidEat()
{
Console.Write("DogEats.")
}
}
3.不异点和分歧点
3.1不异点

3.2分歧点

经由过程不异与分歧的对照,我们只能说接口和笼统类,各有所长,但无优略。在实践的编程理论中,我们要视详细情形来酌情量才,可是以下的履历和堆集,也许能给人人一些启发,除我的一些堆集以外,良多都来历于典范,我信任经得起磨练。以是在划定规矩与场所中,我们进修这些典范,最主要的是学乃至用,固然我将以一家之言广博家之笑,看官请持续。
3.3划定规矩与场所
以上的划定规矩,我就恬不知耻的暂定为T14条吧,写的这么累,就当一时的夸奖吧。人人也能够互通有没有,我将实时订正。
4.典范示例
4.1相对典范
.NETFramework是进修的最好资本,无意识的研讨FCL是每一个.NET程序员的?课,关于接口和笼统类在FCL中的利用,我有以下的倡议:
4.2别样小菜
上面的实例,由于是我的了解,因而给典范打上“绝对”的暗号,至于甚么时分提升为“相对”,就看我在.NET寻求的路上,是不是可以自始自终的云云固执,因而我将把绝对重构到相对为止(呵呵)。本示例没有论述笼统类和接口在计划形式中的使用,由于那将是另外一篇有会商代价的文本,本文着眼与观点和准绳的掌控,可是真实的使用来自于详细的需求标准。
计划布局如图所示:
ASP.NET网页编程之[你必需晓得的.NET] 第二回:对笼统编程:接口和笼统类仓酷云 ...
登录/注册后可看大图

<br>
1.界说笼统类
publicabstractclassAnimal
{
protectedstring_name;

//声明笼统属性
publicabstractstringName
{
get;
}

//声明笼统办法
publicabstractvoidShow();

//完成一样平常办法
publicvoidMakeVoice()
{
Console.WriteLine("Allanimalscanmakevoice!");
}
}
2.界说接口
publicinterfaceIAction
{
//界说大众办法标签
voidMove();
}
3.完成笼统类和接口

publicclassDuck:Animal,IAction
{
publicDuck(stringname)
{
_name=name;
}

//重载笼统办法
publicoverridevoidShow()
{
Console.WriteLine(_name+"isshowingforyou.");
}

//重载笼统属性
publicoverridestringName
{
get{return_name;}
}

//完成接口办法
publicvoidMove()
{
Console.WriteLine("Duckalsocanswim.");
}

}

publicclassDog:Animal,IAction
{
publicDog(stringname)
{
_name=name;
}

publicoverridevoidShow()
{
Console.WriteLine(_name+"isshowingforyou.");
}

publicoverridestringName
{
get{return_name;}
}

publicvoidMove()
{
Console.WriteLine(_name+"alsocanrun.");
}

}
4.客户端完成

publicclassTestAnmial
{
publicstaticvoidMain(string[]args)
{
Animalduck=newDuck("Duck");
duck.MakeVoice();
duck.Show();

Animaldog=newDog("Dog");
dog.MakeVoice();
dog.Show();

IActiondogAction=newDog("Abigdog");
dogAction.Move();
}
}
5.参考之资
正所谓真谛是人人看出来的,以是将园子里有立异性的概念潜列于此,一是感激人人的共享,二是完美一家之言的不敷,但愿可以将范畴构成常识,受用于我,受用于众。

最初,MSDN的倡议是:

6.结论
接口和笼统类,是论坛上、教室间会商最多的话题之一,之以是将这个老话题拿出来再议,是由于从我的体味来讲,深入的了解这两个面向对象的基础内容,关于盘活面向对象的笼统化编程头脑相当主要。本文基础概略了接口和笼统类的观点、异同和利用划定规矩,从进修的概念来看,我以为这些总结已足以表达其中心。可是,关于面向对象和软件计划的深切了解,仍是创建在不休理论的基本上,Scott说本人天天保持一个小时用来写Demo,那末我们是否是更应当勤于键盘呢。关于接口和笼统类,请多用而知其然,多想而知其奥吧。
ASP.NET网页编程之[你必需晓得的.NET] 第二回:对笼统编程:接口和笼统类仓酷云 ...
登录/注册后可看大图

<br>
参考文献
(USA)JeffreyRichter,AppliedMicrosoft.NETFrameworkProgramming

作者: 活着的死人    时间: 2015-1-21 05:38
这也就是最近几年来随着各种新的后台技术的诞生,CGI应用在Internet上越来越少的原因。CGI方式不适合大访问量的应用。
作者: 愤怒的大鸟    时间: 2015-1-26 07:06
当然我们在选择Asp.net主机是,除了要考虑服务提供商在版本是否是实时更新以外,机房的环境和配置也是非常重要的,通常选择骨干网的机房,在速度和稳定性上会非常有保证。
作者: 只想知道    时间: 2015-2-4 13:18
可以看作是VC和Java的混合体吧,尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性。
作者: 山那边是海    时间: 2015-2-15 14:00
如今主流的Web服务器软件主要由IIS或Apache组成。IIS支持ASP且只能运行在Windows平台下,Apache支持PHP,CGI,JSP且可运行于多种平台,虽然Apache是世界使用排名第一的Web服务器平台。
作者: 再现理想    时间: 2015-2-19 02:25
由于JSP/Servlet都是基于Java的,所以它们也有Java语言的最大优点——平台无关性,也就是所谓的“一次编写,随处运行(WORA–WriteOnce,RunAnywhere)”。除了这个优点,JSP/Servlet的效率以及安全性也是相当惊人的。
作者: 第二个灵魂    时间: 2015-3-6 12:08
ASP.net1.1和2.0在程序上的语法也有很大不同,现在2.0属于新出来的,不知道半年后会不会有3.0(说笑一下)。Windows2003系统自动支持ASP和ASP.net环境,不用安装任何程序。Asp.net属于编译语言。ASP的最大不同(ASP属于解释语言)。
作者: 透明    时间: 2015-3-11 01:31
平台无关性是PHP的最大优点,但是在优点的背后,还是有一些小小的缺点的。如果在PHP中不使用ODBC,而用其自带的数据库函数(这样的效率要比使用ODBC高)来连接数据库的话,使用不同的数据库,PHP的函数名不能统一。这样,使得程序的移植变得有些麻烦。不过,作为目前应用最为广泛的一种后台语言,PHP的优点还是异常明显的。
作者: 小妖女    时间: 2015-3-17 18:08
是指转换后的Servlet程序代码的行数。这给调试代码带来一定困难。所以,在排除错误时,可以采取分段排除的方法(在可能出错的代码前后输出一些字符串,用字符串是否被输出来确定代码段从哪里开始出错)。
作者: 若天明    时间: 2015-3-24 16:43
目前在微软的.net战略中新推出的ASP.net借鉴了Java技术的优点,使用CSharp(C#)语言作为ASP.net的推荐语言,同时改进了以前ASP的安全性差等缺点。但是,使用ASP/ASP.net仍有一定的局限性,因为从某种角度来说它们只能在微软的WindowsNT/2000/XP+IIS的服务器平台上良好运行(虽然像ChilliSoft提供了在UNIX/Linux上运行ASP的解决方案.




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2