J'ai récemment appris Asp.Net et utilisé C# pour écrire du code. Lors de l'apprentissage du C#, j'ai découvert que de nombreux débutants n'avaient pas de compréhension particulière de l'héritage et du polymorphisme, j'espère donc qu'il vous sera utile. L'exemple est très simple.
Page FileTestProfileClass2.aspx.
<%@ Page Language="C#" ContentType="text/html" ResponseEncoding="gb2312" Src="profile2.cs" %>
<%@ Importer l'espace de noms="shai" %>
<html>
<tête>
<style>
div{font :Arial, Helvetica, sans-serif ;
couleur d'arrière-plan :#cccccc ;
couleur de la bordure : noir ;
largeur de bordure : 1 ;
style de bordure : solide ;
rembourrage : 10,10,10,10 ;
}
</style>
<langage de script="c#" runat="serveur">
public void Page_Load (expéditeur d'objet, EventArgs e)
{
Profil profile = new Profile();
message.InnerHtml += "<u>Classe de profil</u><br>";
message.InnerHtml += "Prénom:"+profile.getFirstname()+"<br>";
message.InnerHtml += "Lastname:"+profile.getLastname()+"<br>";
message.InnerHtml += "Téléphone :"+profile.getPhonenumber()+"<br><br>";
profil.save();
ExtendedProfile extendprofile = new ExtendedProfile();
message.InnerHtml += "<u>Classe ExtendedProfile</u></br>";
message.InnerHtml += "Prénom:"+profile.getFirstname()+"<br>";
message.InnerHtml += "Lastname:"+profile.getLastname()+"<br>";
message.InnerHtml += "Téléphone :"+extendedprofile.getPhonenumber()+"<br>";
message.InnerHtml += "Adresse1 :"+extendedprofile.getAddress1()+"<br>";
message.InnerHtml += "Adresse2 :"+extendedprofile.getAddress2()+"<br>";
message.InnerHtml += "Ville :"+extendedprofile.getCity()+"<br>";
message.InnerHtml += "State:"+extendedprofile.getState()+"<br>";
message.InnerHtml += "Postal:"+extendedprofile.getPostal()+"<br>";
message.InnerHtml += "Description :"+extendedprofile.getDescription()+"<br>";
profil étendu.save();
}
</script>
<méta http-equiv="Content-Type" content="text/html; charset=gb2312">
<titre></titre>
</tête>
<body style="font:Arial, Helvetica, sans-serif">
<b><h3>Exemple simple d'héritage/polymorphisme</h3></b><br><br>
sortie de l'objet :<br>
<br>
<div id="message" runat="serveur" />
</corps>
</html>
Fichier de définition de classe profile2.cs
utiliser le système ;
en utilisant System.IO ;
en utilisant System.Xml ;
espace de noms shai //espace de noms shai
{
interface ISaveData //Définissez une interface ISaveData, qui est héritée comme classe de base de Profile En raison de ses caractéristiques polymorphes, elle peut être.
{ //Différentes classes appellent des méthodes et les modifient
void save();
}
Profil de classe publique : ISaveData // Définir le profil de classe
{
chaîne protégée _firstname; //Il contient trois attributs, à savoir _firstname, _lastname, phonenumber
chaîne protégée _lastname ;
chaîne protégée _phonenumber ;
public Profile() //Définit la valeur initiale de la propriété
{
_prénom = "Saidy" ;
_nom = "Chen" ;
_numéro de téléphone = "(010)88716990" ;
}
chaîne publique getPhonenumber() //Méthode getPhonenumber() dans la classe Profile
{
retourner _numéro de téléphone ;
}
public virtual void setPhonenumber (chaîne numéro de téléphone)
{
_numéro de téléphone = numéro de téléphone ;
}
chaîne publique getFirstname() //Méthode getFirstname() dans la classe Profile
{
retourner _prénom ;
}
public void setFirstname (chaîne prénom)
{
_firstname = prénom;
}
chaîne publique getLastname() //Méthode getLastname() dans la classe Profile
{
renvoie _lastname ;
}
public void setLastname (nom de chaîne)
{
_lastname = nom de famille ;
}
public virtual void save() //Appelle la méthode save() de l'interface ISaveData
{
//Enregistrer les données au format Texte
FileStream fs = new FileStream("D:\myweb2\profile2.txt",FileMode.Create,FileAccess.Write);
StreamWriter sw = nouveau StreamWriter(fs);
sw.WriteLine("Firstname:"+_firstname.ToString());
sw.WriteLine("Lastname:"+_lastname.ToString());
sw.WriteLine("Téléphone :"+_phonenumber.ToString());
sw.Flush();
sw.Close();
fs.Close();
}
}
classe publique ExtendedProfile : Profile crée une sous-classe Profile ExtendedProfile, qui peut hériter des méthodes de Profile
{
protected string _address1; //Attributs de la sous-classe ExtendedProfile
chaîne protégée _address2 ;
chaîne protégée _city ;
chaîne protégée _state ;
chaîne protégée _postal ;
chaîne protégée _description ;
public ExtendedProfile() //Valeur initiale des attributs dans la sous-classe ExtendedProfile
{
_address1 = « Université Tsinghua » ;
_address2 = "Laboratoire de physique de l'Université Tsinghua" ;
_city = "Pékin" ;
_state = "Pékin" ;
_postal = "100024" ;
_description = "Professeur" ;
}
public override void setPhonenumber(string phonenumber) //Hériter de la méthode setPhonenumber() dans la classe Profile
{ //Surcharge de la méthode setPhonenumber()
_numéro de téléphone = numéro de téléphone ;
}
public string getAddress1() //La méthode getAddress1() dans la sous-classe ExtendedProfile, et ainsi de suite
{
retourner _adresse1 ;
}
chaîne publique getAddress2()
{
retourner _adresse2 ;
}
public void setAddress (adresse de chaîne1, adresse de chaîne2)
{
_adresse1 = adresse1 ;
_adresse2 = adresse2 ;
}
chaîne publique getCity()
{
retourner _ville ;
}
public void setCity (ville de chaîne)
{
_city = ville ;
}
chaîne publique getState()
{
retourner _state ;
}
public void setState (état de la chaîne)
{
_state = état ;
}
chaîne publique getPostal()
{
retourner _postal ;
}
public void setPostal (chaîne postale)
{
_postal = postal ;
}
chaîne publique getDescription()
{
retourner _description ;
}
public void setDescription (description de la chaîne)
{
_description = description ;
}
public override void save() //Appelle la méthode save() dans l'interface ISaveData(), la surcharge de la méthode save(), due au polymorphisme
{ //La sous-classe ExtendedProfile peut personnaliser et modifier la méthode save()
string _document = "d:\myweb2\saidy.xml";
XmlTextWriterwriter = null; //Enregistrer en tant que fichier XML
essayer
{
écrivain = new XmlTextWriter(_document,null);
écrivain.Formatting = Formatting.Indented;
écrivain.WriteStartDocument(false);
writer.WriteDocType("Profile",null,null,null); //Indique <!DOCTYPE Profile>
writer.WriteStartElement("Profile"); //Générer l'élément racine
writer.WriteElementString("firstname",_firstname); //Générer le sous-élément <firstname>_firstname</firstname>
écrivain.WriteElementString("lastname",_lastname);
écrivain.WriteElementString("numéro de téléphone",_numéro de téléphone);
écrivain.WriteElementString("adresse1",_adresse1);
écrivain.WriteElementString("adresse2",_adresse2);
écrivain.WriteElementString("city",_city);
écrivain.WriteElementString("state",_state);
écrivain.WriteElementString("postal",_postal);
écrivain.WriteEndElement();
écrivain.Flush();
écrivain.Close();
}
attraper (Exception ee)
{
Console.WriteLine("Exception :{0}",ee.ToString());
}
}
}
}