热烈祝贺台州朗动科技的站长论坛隆重上线!(2012-05-28)    热烈庆祝伟大的祖国60周年生日 点击进来我们一起为她祝福吧(2009-09-26)    站长论坛禁止发布广告,一经发现立即删除。谢谢各位合作!.(2009-08-08)    热烈祝贺台州网址导航全面升级,全新版本上线!希望各位一如既往地支持台州网址导航的发展.(2009-03-28)    台州站长论坛恭祝各位新年快乐,牛年行大运!(2009-01-24)    台州Link正式更名为台州网址导航,专业做以台州网址为主的网址导航!(2008-05-23)    热烈祝贺台州Link资讯改名为中国站长资讯!希望在以后日子里得到大家的大力支持和帮助!(2008-04-10)    热烈祝贺台州Link论坛改名为台州站长论坛!希望大家继续支持和鼓励!(2008-04-10)    台州站长论坛原[社会琐碎]版块更名为[生活百科]版块!(2007-09-05)    特此通知:新台州站长论坛的数据信息全部升级成功!">特此通知:新台州站长论坛的数据信息全部升级成功!(2007-09-01)    台州站长论坛对未通过验证的会员进行合理的清除,请您谅解(2007-08-30)    台州网址导航|上网导航诚邀世界各地的网站友情链接和友谊联盟,共同引领网站导航、前进!(2007-08-30)    禁止发广告之类的帖,已发现立即删除!(2007-08-30)    希望各位上传与下载有用资源和最新信息(2007-08-30)    热烈祝贺台州站长论坛全面升级成功,全新上线!(2007-08-30)    
便民网址导航,轻松网上冲浪。
台州维博网络专业开发网站门户平台系统
您当前的位置: 首页 » ASP/ASP.NET编程 » 实例了解Asp.Net的继承和多态性

实例了解Asp.Net的继承和多态性

论坛链接
  • 实例了解Asp.Net的继承和多态性
  • 发布时间:2008-10-29 13:31:01    浏览数:7231    发布者:jinlj    设置字体【   
许多学习Asp.Net的新人对Asp.Net继承和多态性不是特别的了解,但其在编程中有重要作用,为了帮助大家学习,我们作了这个例子,以实例来说明,代码比较简单。

以下为引用的内容:
TestProfileClass2.aspx 页面文件
<%@PageLanguage="C#"ContentType="text/html"ResponseEncoding="gb2312"Src="profile2.cs"%>
<%@ImportNamespace="shai"%>
<html>
<head>
<style>
div{font:Arial,Helvetica,sans-serif;
background-color:#cccccc;
border-color:black;
border-width:1;
border-style:solid;
padding:10,10,10,10;
}
</style>
<scriptlanguage="c#"runat="server">
publicvoidPage_Load(Objectsender,EventArgse)
{
Profileprofile=newProfile();
message.InnerHtml+="<u>ProfileClass</u><br>";
message.InnerHtml+="Firstname:"+profile.getFirstname()+"<br>";
message.InnerHtml+="Lastname:"+profile.getLastname()+"<br>";
message.InnerHtml+="Phone:"+profile.getPhonenumber()+"<br><br>";


profile.save();

ExtendedProfileextendedprofile=newExtendedProfile();
message.InnerHtml+="<u>ExtendedProfileClass</u></br>";
message.InnerHtml+="Firstname:"+profile.getFirstname()+"<br>";
message.InnerHtml+="Lastname:"+profile.getLastname()+"<br>";
message.InnerHtml+="Phone:"+extendedprofile.getPhonenumber()+"<br>";
message.InnerHtml+="Address1:"+extendedprofile.getAddress1()+"<br>";
message.InnerHtml+="Address2:"+extendedprofile.getAddress2()+"<br>";
message.InnerHtml+="City:"+extendedprofile.getCity()+"<br>";
message.InnerHtml+="State:"+extendedprofile.getState()+"<br>";
message.InnerHtml+="Postal:"+extendedprofile.getPostal()+"<br>";
message.InnerHtml+="Description:"+extendedprofile.getDescription()+"<br>";

extendedprofile.save();
}
</script>
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312">
<title></title>
</head>
<bodystyle="font:Arial,Helvetica,sans-serif">
<b><h3>简单的继承、多态例子</h3></b><br><br>
objectoutput:<br>
<br>
<divid="message"runat="server"/>
</body>
</html>


profile2.cs 类定义文件
usingSystem;
usingSystem.IO;
usingSystem.Xml;
namespaceshai//名称空间shai
{
interfaceISaveData//定义一个接口ISaveData,他作为Profile的基类被继承,由于其有多态性的特点,可以被
{//不同类调用其中的方法,并修改
voidsave();
}

publicclassProfile:ISaveData//定义类Profile
{
protectedstring_firstname;//里面包含三个属性,分别为_firstname、_lastname、phonenumber
protectedstring_lastname;
protectedstring_phonenumber;

publicProfile()//为属性定义其中的初始值
{
_firstname="Saidy";
_lastname="Chen";
_phonenumber="(010)88716990";
}

publicstringgetPhonenumber()//Profile类中的方法getPhonenumber()
{
return_phonenumber;
}
publicvirtualvoidsetPhonenumber(stringphonenumber)
{
_phonenumber=phonenumber;
}

publicstringgetFirstname()//Profile类中的方法getFirstname()
{
return_firstname;
}
publicvoidsetFirstname(stringfirstname)
{
_firstname=firstname;
}

publicstringgetLastname()//Profile类中的方法getLastname()
{
return_lastname;
}
publicvoidsetLastname(stringlastname)
{
_lastname=lastname;
}

publicvirtualvoidsave()//调用ISaveData接口的save()方法
{
//保存数据为Text格式
FileStreamfs=newFileStream("D:\\myweb2\\profile2.txt",FileMode.Create,FileAccess.Write);
StreamWritersw=newStreamWriter(fs);
sw.WriteLine("Firstname:"+_firstname.ToString());
sw.WriteLine("Lastname:"+_lastname.ToString());
sw.WriteLine("Phone:"+_phonenumber.ToString());
sw.Flush();
sw.Close();
fs.Close();
}
}

publicclassExtendedProfile:Profile建立Profile子类ExtendedProfile,他可以继承Profile中的方法
{
protectedstring_address1;//子类ExtendedProfile的属性
protectedstring_address2;
protectedstring_city;
protectedstring_state;
protectedstring_postal;
protectedstring_description;

publicExtendedProfile()//子类ExtendedProfile中属性的初始值
{
_address1="清华大学";
_address2="清华大学物理实验室";
_city="北京";
_state="北京";
_postal="100024";
_description="教授";
}

publicoverridevoidsetPhonenumber(stringphonenumber)//继承类Profile中的setPhonenumber()方法
{//setPhonenumber()方法的重载
_phonenumber=phonenumber;
}

publicstringgetAddress1()//子类ExtendedProfile中的方法getAddress1(),以下类推
{
return_address1;
}
publicstringgetAddress2()
{
return_address2;
}
publicvoidsetAddress(stringaddress1,stringaddress2)
{
_address1=address1;
_address2=address2;
}

publicstringgetCity()
{
return_city;
}
publicvoidsetCity(stringcity)
{
_city=city;
}

publicstringgetState()
{
return_state;
}
publicvoidsetState(stringstate)
{
_state=state;
}

publicstringgetPostal()
{
return_postal;
}
publicvoidsetPostal(stringpostal)
{
_postal=postal;
}

publicstringgetDescription()
{
return_description;
}
publicvoidsetDescription(stringdescription)
{
_description=description;
}

publicoverridevoidsave()//调用接口ISaveData()中的方法save(),save()方法的重载,由于多态性
{//子类ExtendedProfile可以自定义并修改save()方法
string_document="d:\\myweb2\\saidy.xml";
XmlTextWriterwriter=null;//保存为一个Xml文件
try
{
writer=newXmlTextWriter(_document,null);
writer.Formatting=Formatting.Indented;
writer.WriteStartDocument(false);
writer.WriteDocType("Profile",null,null,null);//表示<!DOCTYPEProfile>
writer.WriteStartElement("Profile");//生成根元素
writer.WriteElementString("firstname",_firstname);//生成子元素<firstname>_firstname</firstname>
writer.WriteElementString("lastname",_lastname);
writer.WriteElementString("phonenumber",_phonenumber);
writer.WriteElementString("address1",_address1);
writer.WriteElementString("address2",_address2);
writer.WriteElementString("city",_city);
writer.WriteElementString("state",_state);
writer.WriteElementString("postal",_postal);
writer.WriteEndElement();
writer.Flush();
writer.Close();
}
catch(Exceptionee)
{
Console.WriteLine("Exception:{0}",ee.ToString());
}
}
}
}
娱乐休闲专区A 影视预告B 音乐咖啡C 英语阶梯D 生活百科
网页编程专区E AMPZF HTMLG CSSH JSI ASPJ PHPK JSPL MySQLM AJAX
Linux技术区 N 系统管理O 服务器架设P 网络/硬件Q 编程序开发R 内核/嵌入
管理中心专区S 发布网址T 版主议事U 事务处理