您好,欢迎访问一九零五行业门户网

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

本人学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()); } } } }
以上就是关于继承和多态性的实例代码的详细内容。
其它类似信息

推荐信息