• 技术文章 >后端开发 >C#.Net教程

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

    零下一度零下一度2017-07-03 17:09:14原创1104
    本人学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.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());
       }
     }
    }
    }

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

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:继承,多态性
    上一篇:创建自己的RSS实例教程 下一篇:ASP.NET中healthMonitor属性的用法教程
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【腾讯云】年中优惠,「专享618元」优惠券!• .NET异步编程总结----四种实现模式代码总结• C#学习日记21----封装 与 访问修饰符• asp.net中3种验证码示例(数字,数字字母混和,汉字)• C# 动态加载Dll• 理解模型,视图和控制器(C#,asp.net)
    1/1

    PHP中文网