关于继承和多态性的实例代码

互联网 17-7-3
本人学Asp.Net不久,用的是C#写代码,在学习C#中发现很多初学者对继承和多态性不是特别的了解,因此作了这个例子,希望对您有所帮助,例子很简单
<%@ 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.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());     }   }  }  }

以上就是关于继承和多态性的实例代码的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:创建自己的RSS实例教程

相关资讯