本人学Asp.Net不久,用的是C#写代码,在学习C#中发现很多初学者对继承和多态性不是特别的了解,因此作了这个例子,希望对您有所帮助,例子很简单

页面文件TestProfileClass2.aspx

<%@ Page Language="C#" ContentType="text/html" ResponseEncoding="gb2312" Src="profile2.cs" %><%@ Import Namespace="shai" %><html><head><style>p{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><p id="message" runat="server" /></body></html>类定义文件profile2.csusing 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());   } }}}

更多相关文章

  1. .NET下关于log4net的使用方法的图文代码分享
  2. C#如何实现添加和修改以及删除PDF书签的方法介绍
  3. 详述Entity Framework自定义分页效果实现方法
  4. 利用Dapper实现分页效果方法教程
  5. C#编程如何获取电脑硬件信息的方法?
  6. 有关.Net MVC长轮询的实现方法
  7. MongoDB在.Net中的使用方法详解
  8. C#连接FTP时路径出现问题的解决方法
  9. 浅析Asp.Net使用Image/ImageButton空间显示本地图片的方法

随机推荐

  1. Android NDK工程创建与编译运行
  2. Android左右连接和USING
  3. htc g11 hboot 2.02.0000 unlock (androi
  4. android中TextAppearanceSpan的使用
  5. 沈大海移动开发课程android,j2me
  6. Android ListView 一些设置 , 去除边缘阴
  7. Android中的GridView详解
  8. Android单选框基本应用方式
  9. android WebView 开发指栏
  10. android教程资源 免费android深入浅出课