查看: 5429|回复: 1
打印 上一主题 下一主题

给Asp.Net初学者的关于继承和多态性的例子

[复制链接]
跳转到指定楼层
1#
发表于 2008-9-11 20:35:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
台州网址导航
本人学Asp.Net不久,用的是C#写代码,在学习C#中发现很多初学者对继承和多态性不是特别的了解,因此作了这个例子,希望对您有所帮助,例子很简单

页面文件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>
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖
台州维博网络(www.tzweb.com)专门运用PHP+MYSQL/ASP.NET+MSSQL技术开发网站门户平台系统等。
2#
 楼主| 发表于 2008-9-11 20:35:16 | 只看该作者
台州网址导航
类定义文件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());
}
}
}
}
台州维博网络(www.tzweb.com)专门运用PHP+MYSQL/ASP.NET+MSSQL技术开发网站门户平台系统等。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

网站推广
关于我们
  • 台州朗动科技(Tzweb.com)拥有多年开发网站平台系统门户手机客户端等业务的成功经验。主要从事:政企网站,系统平台,微信公众号,各类小程序,手机APP客户端,浙里办微应用,浙政钉微应用、主机域名、虚拟空间、后期维护等服务,满足不同企业公司的需求,是台州地区领先的网络技术服务商!

Hi,扫描关注我

Copyright © 2005-2026 站长论坛 All rights reserved

Powered by 站长论坛 with TZWEB Update Techonolgy Support

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