關於繼承和多態性的執行個體代碼

來源:互聯網
上載者:User
本人學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());   } }}}
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.