关于继承和多态性的实例代码
导读:收集整理的这篇文章主要介绍了关于继承和多态性的实例代码,觉得挺不错的,现在分享给大家,也给大家做个参考。本人学Asp.Net不久,用的是C#写代码,在学习C#中发现很多初学者对继承和多态性不是特别的了解,因此作了这个例子,希望对您有所帮助,...
收集整理的这篇文章主要介绍了关于继承和多态性的实例代码,觉得挺不错的,现在分享给大家,也给大家做个参考。本人学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());
}
}
}
}
以上就是关于继承和多态性的实例代码的详细内容,更多请关注其它相关文章!
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 关于继承和多态性的实例代码
本文地址: https://pptw.com/jishu/592508.html
