ฉันเพิ่งเรียนรู้ Asp.Net และใช้ C# ในการเขียนโค้ด เมื่อเรียนรู้ C# ฉันพบว่าผู้เริ่มต้นจำนวนมากไม่มีความเข้าใจเป็นพิเศษเกี่ยวกับการสืบทอดและความหลากหลาย ดังนั้นฉันจึงสร้างตัวอย่างนี้ขึ้นมา ตัวอย่างนั้นง่ายมาก
Page FileTestProfileClass2.aspx
<%@ ภาษาเพจ = "C#" ContentType = "text/html" ResponseEncoding = "gb2312" Src = "profile2.cs" %>
<%@ นำเข้าเนมสเปซ = "shai" %>
<html>
<หัว>
<สไตล์>
div {แบบอักษร:Arial, Helvetica, sans-serif;
สีพื้นหลัง:#cccccc;
ขอบสี:สีดำ;
เส้นขอบกว้าง: 1;
สไตล์เส้นขอบ: ทึบ;
ช่องว่างภายใน:10,10,10,10;
-
</สไตล์>
<ภาษาสคริปต์ = "c #" runat = "เซิร์ฟเวอร์">
โมฆะสาธารณะ Page_Load (ผู้ส่งวัตถุ, EventArgs e)
-
โปรไฟล์ โปรไฟล์ = โปรไฟล์ใหม่();
message.InnerHtml += "<u>คลาสโปรไฟล์</u><br>";
message.InnerHtml += "ชื่อ:"+profile.getFirstname()+"<br>";
message.InnerHtml += "นามสกุล:"+profile.getLastname()+"<br>";
message.InnerHtml += "โทรศัพท์:"+profile.getPhonenumber()+"<br><br>";
โปรไฟล์.บันทึก();
ExtendedProfile Extendedprofile = ExtendedProfile ใหม่ ();
message.InnerHtml += "<u>คลาส ExtendedProfile</u></br>";
message.InnerHtml += "ชื่อ:"+profile.getFirstname()+"<br>";
message.InnerHtml += "นามสกุล:"+profile.getLastname()+"<br>";
message.InnerHtml += "โทรศัพท์:"+extedprofile.getPhonenumber()+"<br>";
message.InnerHtml += "Address1:"+extedprofile.getAddress1()+"<br>";
message.InnerHtml += "Address2:"+extedprofile.getAddress2()+"<br>";
message.InnerHtml += "เมือง:"+extendprofile.getCity()+"<br>";
message.InnerHtml += "สถานะ:"+extendprofile.getState()+"<br>";
message.InnerHtml += "ไปรษณีย์:"+extedprofile.getPostal()+"<br>";
message.InnerHtml += "คำอธิบาย:"+extendprofile.getDescription()+"<br>";
ขยายโปรไฟล์.บันทึก();
-
</สคริปต์>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title></title>
</หัว>
<body style="font:Arial, Helvetica, sans-serif">
<b><h3>ตัวอย่างการสืบทอดอย่างง่าย/ความหลากหลาย</h3></b><br><br>
เอาท์พุทวัตถุ:<br>
<br>
<div id="ข้อความ" runat="เซิร์ฟเวอร์" />
</ร่างกาย>
</html>
ไฟล์คำจำกัดความของคลาส profile2.cs
ใช้ระบบ;
ใช้ System.IO;
ใช้ System.Xml;
เนมสเปซชายย์ // เนมสเปซชายย์
-
อินเทอร์เฟซ ISaveData //กำหนดอินเทอร์เฟซ ISaveData ซึ่งสืบทอดมาเป็นคลาสพื้นฐานของโปรไฟล์ เนื่องจากลักษณะเฉพาะของโพลีมอร์ฟิก
{ //คลาสต่างๆ เรียกเมธอดและแก้ไข
บันทึกเป็นโมฆะ();
-
โปรไฟล์คลาสสาธารณะ: ISaveData // กำหนดโปรไฟล์คลาส
-
สตริงที่ได้รับการป้องกัน _firstname; // ประกอบด้วยสามแอตทริบิวต์ ได้แก่ _firstname, _lastname, phonenumber
สตริงที่ได้รับการป้องกัน _lastname;
สตริงที่ได้รับการป้องกัน _phonenumber;
โปรไฟล์สาธารณะ () // กำหนดค่าเริ่มต้นสำหรับคุณสมบัติ
-
_firstname = "ไซดี้";
_lastname = "เฉิน";
_หมายเลขโทรศัพท์ = "(010)88716990";
-
สตริงสาธารณะ getPhonenumber() //Method getPhonenumber() ในคลาส Profile
-
กลับ_หมายเลขโทรศัพท์;
-
โมฆะเสมือนสาธารณะ setPhonenumber (หมายเลขโทรศัพท์สตริง)
-
_phonenumber = หมายเลขโทรศัพท์;
-
สตริงสาธารณะ getFirstname() //Method getFirstname() ในคลาส Profile
-
กลับ_ชื่อ;
-
โมฆะสาธารณะ setFirstname (ชื่อสตริง)
-
_ชื่อแรก = ชื่อ;
-
สตริงสาธารณะ getLastname() //Method getLastname() ในคลาส Profile
-
กลับ_นามสกุล;
-
โมฆะสาธารณะ setLastname (นามสกุลสตริง)
-
_lastname = นามสกุล;
-
โมฆะเสมือนสาธารณะบันทึก() //เรียกเมธอด save() ของอินเทอร์เฟซ ISaveData
-
//บันทึกข้อมูลในรูปแบบข้อความ
FileStream fs = new FileStream("D:\myweb2\profile2.txt",FileMode.Create,FileAccess.Write);
StreamWriter sw = StreamWriter ใหม่ (fs);
sw.WriteLine("ชื่อ:"+_firstname.ToString());
sw.WriteLine("นามสกุล:"+_lastname.ToString());
sw.WriteLine("โทรศัพท์:"+_phonenumber.ToString());
sw.ฟลัช();
sw.ปิด();
fs.ปิด();
-
-
คลาสสาธารณะ ExtendedProfile:Profile สร้างคลาสย่อย Profile ExtendedProfile ซึ่งสามารถสืบทอดเมธอดใน Profile ได้
-
สตริงที่ได้รับการป้องกัน _address1; //คุณสมบัติของคลาสย่อย ExtendedProfile
สตริงที่ได้รับการป้องกัน _address2;
สตริงที่ได้รับการป้องกัน _city;
สตริงที่ได้รับการป้องกัน _state;
สตริงที่ได้รับการป้องกัน _postal;
สตริงที่ได้รับการป้องกัน _description;
public ExtendedProfile() //ค่าเริ่มต้นของแอตทริบิวต์ในคลาสย่อย ExtendedProfile
-
_address1 = "มหาวิทยาลัยซิงหัว";
_address2 = "ห้องปฏิบัติการฟิสิกส์มหาวิทยาลัยซิงหัว";
_city = "ปักกิ่ง";
_state = "ปักกิ่ง";
_postal = "100024";
_description = "ศาสตราจารย์";
-
การแทนที่สาธารณะถือเป็นโมฆะ setPhonenumber (หมายเลขโทรศัพท์สตริง) // สืบทอดเมธอด setPhonenumber () ในโปรไฟล์คลาส
{ //การโอเวอร์โหลดของเมธอด setPhonenumber()
_phonenumber = หมายเลขโทรศัพท์;
-
สตริงสาธารณะ getAddress1() //เมธอด getAddress1() ในคลาสย่อย ExtendedProfile และอื่นๆ
-
กลับ_ที่อยู่1;
-
สตริงสาธารณะ getAddress2()
-
กลับ_ที่อยู่2;
-
setAddress โมฆะสาธารณะ (ที่อยู่สตริง 1, ที่อยู่สตริง 2)
-
_address1 = ที่อยู่1;
_address2 = ที่อยู่2;
-
สตริงสาธารณะ getCity()
-
กลับ_เมือง;
-
โมฆะสาธารณะ setCity (เมืองสตริง)
-
_เมือง = เมือง;
-
สตริงสาธารณะ getState()
-
กลับ _state;
-
โมฆะสาธารณะ setState (สถานะสตริง)
-
_state = สถานะ;
-
สตริงสาธารณะ getPostal()
-
กลับ_ไปรษณีย์;
-
โมฆะสาธารณะ setPostal (สตริงไปรษณีย์)
-
_postal = ไปรษณีย์;
-
สตริงสาธารณะ getDescription()
-
กลับ_คำอธิบาย;
-
โมฆะสาธารณะ setDescription (คำอธิบายสตริง)
-
_คำอธิบาย = คำอธิบาย;
-
public override void save() //เรียกเมธอด save() ในอินเทอร์เฟซ ISaveData() ซึ่งเป็นการโอเวอร์โหลดของเมธอด save() เนื่องจากความหลากหลาย
{ //คลาสย่อย ExtendedProfile สามารถปรับแต่งและแก้ไขเมธอด save() ได้
string _document = "d:\myweb2\saidy.xml";
ผู้เขียน XmlTextWriter = null; //บันทึกเป็นไฟล์ Xml
พยายาม
-
ผู้เขียน = XmlTextWriter ใหม่ (_document, null);
Writer.Formatting = การจัดรูปแบบเยื้อง;
Writer.WriteStartDocument (เท็จ);
writer.WriteDocType("โปรไฟล์",null,null,null); //ระบุ <!DOCTYPE โปรไฟล์>
writer.WriteStartElement("โปรไฟล์"); //สร้างองค์ประกอบรูท
writer.WriteElementString("firstname",_firstname); //สร้างองค์ประกอบย่อย <firstname>_firstname</firstname>
writer.WriteElementString("นามสกุล",_นามสกุล);
writer.WriteElementString("หมายเลขโทรศัพท์",_phonenumber);
WriteElementString("address1",_address1);
writer.WriteElementString("ที่อยู่2",_address2);
writer.WriteElementString("เมือง",_เมือง);
writer.WriteElementString("สถานะ",_state);
writer.WriteElementString("ไปรษณีย์",_postal);
นักเขียนWriteEndElement();
นักเขียนฟลัช();
นักเขียน.ปิด();
-
จับ (ยกเว้น ee)
-
Console.WriteLine("ข้อยกเว้น:{0}",ee.ToString());
-
-
-
-