Ich habe kürzlich Asp.Net gelernt und C# zum Schreiben von Code verwendet. Beim Erlernen von C# habe ich festgestellt, dass viele Anfänger kein besonderes Verständnis für Vererbung und Polymorphismus haben
Beispiel
ist sehr einfach
<%@ Page Language="C#" ContentType="text/html" ResponseEncoding="gb2312" Src="profile2.cs" %>
<%@ Import Namespace="shai" %>
<html>
<Kopf>
<Stil>
div{font:Arial, Helvetica, serifenlos;
Hintergrundfarbe:#cccccc;
Randfarbe:schwarz;
Randbreite:1;
Rahmenstil:solid;
Polsterung:10,10,10,10;
}
</style>
<script language="c#" runat="server">
public void Page_Load(Object sender,EventArgs e)
{
Profilprofil = neues Profil();
message.InnerHtml += "<u>Profile Class</u><br>";
message.InnerHtml += "Vorname:"+profile.getFirstname()+"<br>";
message.InnerHtml += "Lastname:"+profile.getLastname()+"<br>";
message.InnerHtml += "Telefon:"+profile.getPhonenumber()+"<br><br>";
Profile.save();
ExtendedProfile advancedprofile = new ExtendedProfile();
message.InnerHtml += "<u>ExtendedProfile Class</u></br>";
message.InnerHtml += "Vorname:"+profile.getFirstname()+"<br>";
message.InnerHtml += "Lastname:"+profile.getLastname()+"<br>";
message.InnerHtml += "Telefon:"+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>";
erweitertprofile.save();
}
</script>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title></title>
</head>
<body style="font:Arial, Helvetica, serifenlos">
<b><h3>Einfaches Beispiel für Vererbung/Polymorphismus</h3></b><br><br>
Objektausgabe:<br>
<br>
<div id="message" runat="server" />
</body>
</html>
Klassendefinitionsdatei „profile2.cs“.
Verwenden des Systems;
mit System.IO;
mit System.Xml;
Namespace Shai //Namespace Shai
{
Schnittstelle ISaveData // Definieren Sie eine Schnittstelle ISaveData, die aufgrund ihrer polymorphen Eigenschaften als Basisklasse vererbt werden kann
{ //Verschiedene Klassen rufen Methoden auf und ändern sie
void save();
}
öffentliche Klasse Profile:ISaveData //Klassenprofil definieren
{
protected string _firstname; //Es enthält drei Attribute, nämlich _firstname, _lastname, phonenumber
geschützter String _lastname;
geschützte Zeichenfolge _phonenumber;
public Profile() //Definieren Sie den Anfangswert für die Eigenschaft
{
_firstname = "Saidy";
_lastname = "Chen";
_phonenumber = "(010)88716990";
}
öffentliche Zeichenfolge getPhonenumber() //Methode getPhonenumber() in der Profile-Klasse
{
return _phonenumber;
}
public virtual void setPhonenumber(string phonenumber)
{
_phonenumber = Telefonnummer;
}
öffentliche Zeichenfolge getFirstname() //Methode getFirstname() in der Profile-Klasse
{
return _firstname;
}
public void setFirstname(string firstname)
{
_firstname = Vorname;
}
öffentliche Zeichenfolge getLastname() //Methode getLastname() in der Profile-Klasse
{
return _lastname;
}
public void setLastname(string lastname)
{
_lastname = Nachname;
}
public virtual void save() //Rufen Sie die save()-Methode der ISaveData-Schnittstelle auf
{
//Daten im Textformat speichern
FileStream fs = new FileStream("D:\myweb2\profile2.txt",FileMode.Create,FileAccess.Write);
StreamWriter sw = new StreamWriter(fs);
sw.WriteLine("Vorname:"+_vorname.ToString());
sw.WriteLine("Lastname:"+_lastname.ToString());
sw.WriteLine("Phone:"+_phonenumber.ToString());
sw.Flush();
sw.Close();
fs.Close();
}
}
Die öffentliche Klasse ExtendedProfile:Profile erstellt eine Profile-Unterklasse ExtendedProfile, die die Methoden in Profile erben kann
{
protected string _address1; //Attribute der Unterklasse ExtendedProfile
geschützte Zeichenfolge _address2;
geschützte Zeichenfolge _city;
geschützter String _state;
geschützte Zeichenfolge _postal;
geschützte Zeichenfolge _description;
public ExtendedProfile() //Anfangswert der Attribute in der Unterklasse ExtendedProfile
{
_address1 = „Tsinghua-Universität“;
_address2 = „Physiklabor der Tsinghua-Universität“;
_city = "Peking";
_state = "Peking";
_postal = "100024";
_description = "Professor";
}
public override void setPhonenumber(string phonenumber) //Erben Sie die setPhonenumber()-Methode in der Klasse Profile
{ //Überladung der setPhonenumber()-Methode
_phonenumber = Telefonnummer;
}
öffentliche Zeichenfolge getAddress1() //Die Methode getAddress1() in der Unterklasse ExtendedProfile usw
{
return _address1;
}
öffentliche Zeichenfolge getAddress2()
{
return _address2;
}
public void setAddress(string adresse1,string adresse2)
{
_address1 = adresse1;
_address2 = adresse2;
}
öffentlicher String getCity()
{
return _city;
}
public void setCity(string city)
{
_city = Stadt;
}
öffentlicher String getState()
{
return _state;
}
public void setState(string state)
{
_state = Zustand;
}
öffentliche Zeichenfolge getPostal()
{
return _postal;
}
public void setPostal(string postal)
{
_postal = postalisch;
}
öffentliche Zeichenfolge getDescription()
{
return _description;
}
public void setDescription(String-Beschreibung)
{
_description = Beschreibung;
}
public override void save() // Rufen Sie die Methode save() in der Schnittstelle ISaveData() auf, die Überladung der Methode save() aufgrund von Polymorphismus
{ //Unterklasse ExtendedProfile kann die Methode save() anpassen und ändern
string _document = "d:\myweb2\saidy.xml";
XmlTextWriterwriter = null; //Als XML-Datei speichern
versuchen
{
writer = new XmlTextWriter(_document,null);
write.Formatting = Formatting.Indented;
Writer.WriteStartDocument(false);
write.WriteDocType("Profile",null,null,null); //Gibt <!DOCTYPE Profile> an
writer.WriteStartElement("Profile"); //Stammelement generieren
writer.WriteElementString("firstname",_firstname); //Unterelement <firstname>_firstname</firstname> generieren
write.WriteElementString("lastname",_lastname);
Writer.WriteElementString("Telefonnummer",_Telefonnummer);
Writer.WriteElementString("address1",_address1);
write.WriteElementString("address2",_address2);
Writer.WriteElementString("city",_city);
Writer.WriteElementString("state",_state);
Writer.WriteElementString("postal",_postal);
Writer.WriteEndElement();
Writer.Flush();
Writer.Close();
}
Catch (Ausnahme ee)
{
Console.WriteLine("Exception:{0}",ee.ToString());
}
}
}
}