لقد تعلمت مؤخرًا Asp.Net واستخدمت لغة C# لكتابة التعليمات البرمجية، ووجدت أن العديد من المبتدئين ليس لديهم فهم خاص للميراث وتعدد الأشكال، لذلك آمل أن يكون هذا المثال مفيدًا لك
المثال
بسيط جدًا
<%@ لغة الصفحة = "C#" ContentType = "text/html" ResponseEncoding = "gb2312" Src = "profile2.cs" %>
<%@ استيراد مساحة الاسم = "shai" %>
<أتش تي أم أل>
<الرأس>
<نمط>
div{font:Arial، Helvetica، sans-serif؛
لون الخلفية:#cccccc;
لون الحدود: أسود؛
عرض الحدود: 1؛
نمط الحدود: صلب؛
الحشو: 10،10،10،10؛
}
</نمط>
<script language="c#" runat="server">
Page_Load الفراغ العام (مرسل الكائن، EventArgs e)
{
ملف التعريف = ملف التعريف الجديد () ؛
message.InnerHtml += "<u>فئة الملف الشخصي</u><br>";
message.InnerHtml += "الاسم الأول:"+profile.getFirstname()+"<br>";
message.InnerHtml += "Lastname:"+profile.getLastname()+"<br>";
message.InnerHtml += "الهاتف:"+profile.getPhonenumber()+"<br><br>";
الملف الشخصي.حفظ();
ExtendedProfile Extendedprofile = new ExtendedProfile();
message.InnerHtml += "<u>فئة الملف الشخصي الممتد</u></br>";
message.InnerHtml += "الاسم الأول:"+profile.getFirstname()+"<br>";
message.InnerHtml += "Lastname:"+profile.getLastname()+"<br>";
message.InnerHtml += "الهاتف:"+extenedprofile.getPhonenumber()+"<br>";
message.InnerHtml += "Address1:"+extenedprofile.getAddress1()+"<br>";
message.InnerHtml += "Address2:"+extenedprofile.getAddress2()+"<br>";
message.InnerHtml += "المدينة:"+extenedprofile.getCity()+"<br>";
message.InnerHtml += "State:"+extenedprofile.getState()+"<br>";
message.InnerHtml += "Postal:"+extenedprofile.getPostal()+"<br>";
message.InnerHtml += "Description:"+extenedprofile.getDescription()+"<br>";
Extendprofile.save();
}
</script>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<العنوان></العنوان>
</الرأس>
<body style="font:Arial, Helvetica, sans-serif">
<b><h3>مثال بسيط للوراثة/تعدد الأشكال</h3></b><br><br>
إخراج الكائن:<br>
<ر>
<div id="message" runat="server" />
</الجسم>
</html>
ملف تعريف الفئة Profile2.cs
باستخدام النظام؛
باستخدام System.IO؛
باستخدام System.Xml؛
مساحة الاسم شاي // مساحة الاسم شاي
{
واجهة ISaveData // تحديد واجهة ISaveData، التي تم توريثها كفئة أساسية لملف التعريف، نظرًا لخصائصها المتعددة الأشكال
{ // فئات مختلفة لاستدعاء الأساليب وتعديلها
حفظ باطل () ؛
}
ملف تعريف الفئة العامة: ISaveData // تحديد ملف تعريف الفئة
{
سلسلة محمية _firstname // تحتوي على ثلاث سمات، وهي _firstname، _lastname، وphonenumber
سلسلة محمية _اسم العائلة؛
سلسلة محمية _phonenumber؛
public Profile() // تحديد القيمة الأولية للخاصية
{
_firstname = "سعيد";
_lastname = "تشن"؛
_رقم الهاتف = "(010)88716990";
}
سلسلة عامة getPhonenumber() // طريقة getPhonenumber() في فئة الملف الشخصي
{
إرجاع _ رقم الهاتف؛
}
مجموعة الفراغ الظاهري العام رقم الهاتف (رقم هاتف السلسلة)
{
_رقم الهاتف = رقم الهاتف؛
}
سلسلة عامة getFirstname() // طريقة getFirstname() في فئة ملف التعريف
{
إرجاع _ الاسم الأول؛
}
مجموعة الفراغ العامةالاسم الأول (سلسلة)
{
_الاسم الأول =؛
}
سلسلة عامة getLastname() // طريقة getLastname() في فئة ملف التعريف
{
إرجاع _اسم العائلة؛
}
اسم العائلة الفارغ العام (اسم العائلة للسلسلة)
{
_اسم العائلة = اسم العائلة؛
}
public virtual void save() // اتصل بطريقة الحفظ () لواجهة ISaveData
{
//حفظ البيانات بتنسيق النص
FileStream fs = new FileStream("D:\myweb2\profile2.txt",FileMode.Create,FileAccess.Write);
StreamWriter sw = new StreamWriter(fs);
sw.WriteLine("الاسم الأول:"+_firstname.ToString());
sw.WriteLine("اسم العائلة:"+_lastname.ToString());
sw.WriteLine("الهاتف:"+_phonenumber.ToString());
sw.Flush();
sw.Close();
fs.Close();
}
}
الفئة العامة ExtendedProfile: يقوم الملف الشخصي بإنشاء فئة فرعية لملف التعريف ExtendedProfile، والتي يمكنها أن ترث الأساليب الموجودة في الملف الشخصي
{
protected string _address1; // سمات الفئة الفرعية ExtendedProfile
سلسلة محمية _address2;
سلسلة محمية _city؛
سلسلة محمية _state؛
سلسلة محمية _postal؛
وصف السلسلة المحمية؛
public ExtendedProfile() // القيمة الأولية للسمات في الفئة الفرعية ExtendedProfile
{
_address1 = "جامعة تسينغهوا";
_address2 = "مختبر الفيزياء بجامعة تسينغهوا";
_city = "بكين";
_state = "بكين";
_postal = "100024";
_description = "الأستاذ";
}
التجاوز العام void setPhonenumber(string phonenumber) // وراثة طريقة setPhonenumber() في ملف تعريف الفصل
{ // التحميل الزائد لطريقة setPhonenumber()
_رقم الهاتف = رقم الهاتف؛
}
سلسلة عامة getAddress1() // طريقة getAddress1() في الفئة الفرعية ExtendedProfile، وما إلى ذلك
{
عنوان الإرجاع 1؛
}
سلسلة عامة getAddress2()
{
عنوان الإرجاع 2؛
}
عنوان مجموعة الفراغ العام (عنوان السلسلة 1، عنوان السلسلة 2)
{
_address1 = Address1;
_address2 = Address2;
}
سلسلة عامة getCity()
{
مدينة العودة؛
}
مجموعة الفراغ العام (مدينة السلسلة)
{
_مدينة = مدينة؛
}
سلسلة عامة getState ()
{
حالة الإرجاع؛
}
حالة الفراغ العام (حالة السلسلة)
{
_state = State;
}
سلسلة عامة getPostal ()
{
العودة _البريدية.
}
مجموعة الفراغ العام (سلسلة بريدية)
{
_postal = بريدي؛
}
الحصول على سلسلة عامة ()
{
وصف الإرجاع؛
}
وصف مجموعة الفراغ العام (وصف السلسلة)
{
_وصف = وصف؛
}
التجاوز العام void save() // استدعاء الطريقة save() في الواجهة ISaveData()، التحميل الزائد لطريقة الحفظ()، بسبب تعدد الأشكال
{ // يمكن للفئة الفرعية ExtendedProfile تخصيص طريقة الحفظ () وتعديلها
string _document = "d:\myweb2\saidy.xml";
XmlTextWriterwriter = null; // احفظ كملف Xml
يحاول
{
الكاتب = جديد XmlTextWriter(_document,null);
Writer.Formatting = Formatting.Indented;
writer.WriteStartDocument(false);
Writer.WriteDocType("Profile",null,null,null); // يشير إلى <!DOCTYPE Profile>
Writer.WriteStartElement("الملف الشخصي"); // إنشاء عنصر الجذر
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();
الكاتب. فلوش ()؛
الكاتب. إغلاق ()؛
}
قبض (استثناء هه)
{
Console.WriteLine("الاستثناء:{0}"،ee.ToString());
}
}
}
}