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

来源:互联网 发布:朋友圈图文编辑软件 编辑:程序博客网 时间:2024/06/06 01:40
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
本人学Asp.Net不久,用的是C#写代码,在学习C#中发现很多初学者对继承和多态性不是特别的了解,因此作了这个例子,希望对您有所帮助,例子很简单

页面文件TestProfileClass2.Aspx
<%@ Page Language="C#" ContentType="text/html" ResponseEncoding="gb2312" Src="profile2.cs" %>
<%@ Import Namespace="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>
<script language="c#" runat="server">
public void Page_Load(Object sender,EventArgs e)
{
Profile profile = new Profile();
message.InnerHtml = "<u>Profile Class</u><br>";
message.InnerHtml = "Firstname:" profile.getFirstname() "<br>";
message.InnerHtml = "Lastname:" profile.getLastname() "<br>";
message.InnerHtml = "Phone:" profile.getPhonenumber() "<br><br>";

profile.save();

ExtendedProfile extendedprofile = new ExtendedProfile();
message.InnerHtml = "<u>ExtendedProfile Class</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>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title></title>
</head>
<body style="font:Arial, Helvetica, sans-serif ">
<b><h3>简单的继承/多态例子</h3></b><br><br>
object output:<br>
<br>
<div id="message" runat="server" />
</body>
</html>


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

public class Profile:ISaveData //定义类Profile
{
protected string _firstname; //里面包含三个属性,分别为_firstname、_lastname、phonenumber
protected string _lastname;
protected string _phonenumber;

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

public string getPhonenumber() //Profile类中的方法getPhonenumber()
{
return _phonenumber;
}
public virtual void setPhonenumber(string phonenumber)
{
_phonenumber = phonenumber;
}

public string getFirstname() //Profile类中的方法getFirstname()
{
return _firstname;
}
public void setFirstname(string firstname)
{
_firstname = firstname;
}

public string getLastname() //Profile类中的方法getLastname()
{
return _lastname;
}
public void setLastname(string lastname)
{
_lastname = lastname;
}

public virtual void save() //调用ISaveData接口的save()方法
{
//保存数据为Text格式
FileStream fs = new FileStream("D://myweb2//profile2.txt",FileMode.Create,FileAccess.Write);
StreamWriter sw = new StreamWriter(fs);
sw.WriteLine("Firstname:" _firstname.ToString());
sw.WriteLine("Lastname:" _lastname.ToString());
sw.WriteLine("Phone:" _phonenumber.ToString());
sw.Flush();
sw.Close();
fs.Close();
}
}

public class ExtendedProfile:Profile 建立Profile子类ExtendedProfile,他可以继承Profile中的方法
{
protected string _address1; //子类ExtendedProfile的属性
protected string _address2;
protected string _city;
protected string _state;
protected string _postal;
protected string _description;

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

public override void setPhonenumber(string phonenumber) //继承类Profile中的setPhonenumber()方法
{ //setPhonenumber()方法的重载
_phonenumber = phonenumber;
}

public string getAddress1() //子类ExtendedProfile中的方法getAddress1(),以下类推
{
return _address1;
}
public string getAddress2()
{
return _address2;
}
public void setAddress(string address1,string address2)
{
_address1 = address1;
_address2 = address2;
}

public string getCity()
{
return _city;
}
public void setCity(string city)
{
_city = city;
}

public string getState()
{
return _state;
}
public void setState(string state)
{
_state = state;
}

public string getPostal()
{
return _postal;
}
public void setPostal(string postal)
{
_postal = postal;
}

public string getDescription()
{
return _description;
}
public void setDescription(string description)
{
_description = description;
}

public override void save() //调用接口ISaveData()中的方法save(),save()方法的重载,由于多态性
{ //子类ExtendedProfile可以自定义并修改save()方法
string _document = "d://myweb2//saidy.xml";
XmlTextWriter writer = null; //保存为一个Xml文件
try
{
writer = new XmlTextWriter(_document,null);
writer.Formatting = Formatting.Indented;
writer.WriteStartDocument(false);
writer.WriteDocType("Profile",null,null,null); //表示<!DOCTYPE Profile>
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(Exception ee)
{
Console.WriteLine("Exception:{0}",ee.ToString());
}
}
}
}

<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 帮室友带东西她忘给钱怎么办? 鸿合录播系统不会自动跟踪了怎么办 小米2s锁屏密码忘了怎么办 想用中国驾照去美国开车怎么办? 5座的车坐7个人怎么办 海尔电视机的设置调乱了怎么办 老公弟兄两个有个偏心的婆婆怎么办 农商银行u盾密码忘了怎么办 不熟的表弟表妹向你借钱怎么办 开货车撞到人家房子了怎么办 坐骨被摔跤后好多年没好怎么办 自动挡汽车电子手刹刹车失灵怎么办 买家拍了不包邮的宝贝付款了怎么办 包邮快递买家不要了运费怎么办 舞蹈劈叉练出肌肉劈不下去怎么办 腰间盘突出压迫神经腿疼怎么办盘 绑定了我身份证的微信被盗了怎么办 用身份证办的手机卡不用了怎么办 平安陆金所交易密码忘了怎么办 陆金所密码交易密码忘记怎么办 带介指手指月肿了拿不下来怎么办 老公搞建筑的要长期在外地怎么办 媳妇跟婆婆吵架老公帮婆婆该怎么办 在家里礼佛香炉剩下的香头怎么办 精索曲张最近一打篮球就蛋疼怎么办 都两天了快递还是显示已发货怎么办 中通快递到达一天就是不派送怎么办 顺丰派送员把快递寄错了怎么办 顺丰快递把户籍卡弄丢了怎么办 金立手机不小心设置成英文了怎么办 三星手机不小心设置成英文了怎么办 手游方舟国际版渡渡鸟跟丢了怎么办 一打电话4g变2g怎么办 手机4g突然变2g怎么办 江湖风云录八卦门任务拒绝了怎么办 百度网盘下载时显示违规信息怎么办 在海马助手下载的游戏闪退怎么办 手机版百度云盘不能普通下载怎么办 手机版百度云盘一直加载中怎么办 登别人的网盘单同步通讯录了怎么办 被培训公司骗了贷款之后该怎么办