当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > 给Asp.Net初学者的关于继承和多态性的例子

ASP.NET
FreeTextBox(版本3.1.6)在ASP.Net 2.0中使用方法
.NET 常用功能和代码小结
在 .NET Framework 2.0 中未处理的异常导致基于 ASP.NET 的应用程序意外退出
asp.net IList查询数据后格式化数据再绑定控件
asp.net sql存储过程
asp.net 简单实现禁用或启用页面中的某一类型的控件
asp.net(c#)获取内容第一张图片地址的函数
The remote procedure call failed and did not execute的解决办法
ASP.NET 在线文件管理
asp.net 读取并修改config文件实现代码
ASP.NET Cookie 操作实现
asp.net Silverlight中的模式窗体
Silverlight中动态获取Web Service地址
asp.net Silverlight应用程序中获取载体aspx页面参数
asp.net 水晶报表隔行换色实现方法
asp.net 获取Gridview隐藏列的值
手动把asp.net的类生成dll文件的方法
asp.net 使用ObjectDataSource控件在ASP.NET中实现Ajax真分页
动态指定任意类型的ObjectDataSource对象的查询参数
asp.net Md5的用法小结

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 83 ::
收藏到网摘: n/a

本人学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());
}
}
}
}