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

来源:互联网 发布:网络棋牌赌博没人管 编辑:程序博客网 时间:2024/06/06 05:45
页面文件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());
  }
  }
  }
  }
原创粉丝点击