Recientemente aprendí Asp.Net y usé C# para escribir código. Cuando aprendí C#, descubrí que muchos principiantes no tienen un conocimiento especial de la herencia y el polimorfismo, así que hice este ejemplo. El ejemplo es muy simple.
Página FileTestProfileClass2.aspx.
<%@ Idioma de página="C#" ContentType="text/html" ResponseEncoding="gb2312" Src="profile2.cs" %>
<%@ Importar espacio de nombres="shai" %>
<html>
<cabeza>
<estilo>
div{fuente:Arial, Helvética, sans-serif;
color de fondo: #cccccc;
color del borde: negro;
ancho de borde: 1;
estilo de borde: sólido;
relleno: 10,10,10,10;
}
</estilo>
<script language="c#" runat="servidor">
public void Page_Load (Remitente del objeto, EventArgs e)
{
Perfil perfil = nuevo perfil();
message.InnerHtml += "<u>Clase de perfil</u><br>";
message.InnerHtml += "Nombre:"+profile.getFirstname()+"<br>";
message.InnerHtml += "Apellido:"+profile.getApellido()+"<br>";
message.InnerHtml += "Teléfono:"+profile.getPhonenumber()+"<br><br>";
perfil.guardar();
Perfil extendido perfil extendido = nuevo Perfil extendido();
message.InnerHtml += "<u>Clase de perfil extendido</u></br>";
message.InnerHtml += "Nombre:"+profile.getFirstname()+"<br>";
message.InnerHtml += "Apellido:"+profile.getApellido()+"<br>";
message.InnerHtml += "Teléfono:"+extendedprofile.getPhonenumber()+"<br>";
message.InnerHtml += "Dirección1:"+extendedprofile.getAddress1()+"<br>";
message.InnerHtml += "Dirección2:"+extendedprofile.getAddress2()+"<br>";
message.InnerHtml += "Ciudad:"+extendedprofile.getCity()+"<br>";
message.InnerHtml += "Estado:"+extendedprofile.getState()+"<br>";
message.InnerHtml += "Postal:"+extendedprofile.getPostal()+"<br>";
message.InnerHtml += "Descripción:"+extendedprofile.getDescription()+"<br>";
perfil extendido.save();
}
</script>
<meta http-equiv="Tipo de contenido" content="text/html; charset=gb2312">
<título></título>
</cabeza>
<estilo del cuerpo="font:Arial, Helvética, sans-serif">
<b><h3>Ejemplo simple de herencia/polimorfismo</h3></b><br><br>
salida del objeto:<br>
<br>
<div id="mensaje" runat="servidor" />
</cuerpo>
</html>
Archivo de definición de clase perfil2.cs
usando Sistema;
usando System.IO;
usando System.Xml;
espacio de nombres shai //espacio de nombres shai
{
interfaz ISaveData //Defina una interfaz ISaveData, que se hereda como clase base de Profile. Debido a sus características polimórficas, puede ser.
{ //Diferentes clases llaman a métodos y los modifican
anular guardar();
}
Perfil de clase pública: ISaveData //Definir perfil de clase
{
cadena protegida _firstname // Contiene tres atributos, a saber, _firstname, _lastname, phonenumber;
cadena protegida _apellido;
cadena protegida _número de teléfono;
public Profile() //Definir el valor inicial de la propiedad
{
_firstname = "Saidy";
_apellido = "Chen";
_número de teléfono = "(010)88716990";
}
cadena pública getPhonenumber() //Método getPhonenumber() en la clase de perfil
{
devolver _número de teléfono;
}
conjunto vacío virtual público Número de teléfono (número de teléfono de cadena)
{
_número de teléfono = número de teléfono;
}
cadena pública getFirstname() //Método getFirstname() en la clase de perfil
{
devolver _nombre;
}
setFirstname público vacío (nombre de cadena)
{
_firstname = nombre;
}
cadena pública getLastname() //Método getLastname() en la clase Perfil
{
devolver _apellido;
}
conjunto vacío públicoApellido (cadena apellido)
{
_apellido = apellido;
}
public virtual void save() // Llama al método save() de la interfaz ISaveData
{
//Guardar datos en formato de texto
FileStream fs = new FileStream("D:\myweb2\profile2.txt",FileMode.Create,FileAccess.Write);
StreamWriter sw = nuevo StreamWriter(fs);
sw.WriteLine("Nombre:"+_firstname.ToString());
sw.WriteLine("Apellido:"+_apellido.ToString());
sw.WriteLine("Teléfono:"+_númerodeteléfono.ToString());
sw.Flush();
sw.Cerrar();
fs.Cerrar();
}
}
clase pública ExtendedProfile: Profile crea una subclase de perfil ExtendedProfile, que puede heredar los métodos en Profile
{
cadena protegida _address1 //Atributos de la subclase ExtendedProfile;
cadena protegida _address2;
cadena protegida _ciudad;
cadena protegida _state;
cadena protegida _postal;
cadena protegida _descripción;
public ExtendedProfile() //Valor inicial de los atributos en la subclase ExtendedProfile
{
_address1 = "Universidad de Tsinghua";
_address2 = "Laboratorio de Física de la Universidad de Tsinghua";
_ciudad = "Pekín";
_estado = "Pekín";
_postal="100024";
_descripción = "Profesor";
}
anulación pública void setPhonenumber(string phonenumber) //Hereda el método setPhonenumber() en la clase Profile
{ //Sobrecarga del método setPhonenumber()
_número de teléfono = número de teléfono;
}
cadena pública getAddress1() //El método getAddress1() en la subclase ExtendedProfile, etc.
{
devolver _dirección1;
}
cadena pública getAddress2()
{
devolver _dirección2;
}
setAddress público vacío (dirección de cadena1, dirección de cadena2)
{
_dirección1 = dirección1;
_dirección2 = dirección2;
}
cadena pública getCity()
{
devolver _ciudad;
}
setCity público vacío (ciudad de cadena)
{
_ciudad = ciudad;
}
cadena pública getState()
{
devolver _estado;
}
setState público vacío (estado de cadena)
{
_estado = estado;
}
cadena pública getPostal()
{
devolver _postal;
}
setPostal público vacío (cadena postal)
{
_postal = postal;
}
cadena pública getDescription()
{
devolver _descripción;
}
setDescription pública vacía (descripción de cadena)
{
_descripción = descripción;
}
public override void save() // Llama al método save() en la interfaz ISaveData(), la sobrecarga del método save(), debido al polimorfismo
{ //La subclase ExtendedProfile puede personalizar y modificar el método save()
cadena _document = "d:\myweb2\saidy.xml";
XmlTextWriter escritor = null; //Guardar como un archivo XML
intentar
{
escritor = nuevo XmlTextWriter(_document,null);
escritor.Formato = Formateo.Indentado;
escritor.WriteStartDocument(falso);
escritor.WriteDocType("Perfil",null,null,null); //Indica <!DOCTYPE Perfil>
escritor.WriteStartElement("Perfil"); //Generar elemento raíz
escritor.WriteElementString("firstname",_firstname //Generar subelemento <firstname>_firstname</firstname>);
escritor.WriteElementString("apellido",_apellido);
escritor.WriteElementString("número de teléfono",_número de teléfono);
escritor.WriteElementString("dirección1",_dirección1);
escritor.WriteElementString("dirección2",_dirección2);
escritor.WriteElementString("ciudad",_ciudad);
escritor.WriteElementString("estado",_estado);
escritor.WriteElementString("postal",_postal);
escritor.WriteEndElement();
escritor.Flush();
escritor.Close();
}
captura (Excepción ee)
{
Console.WriteLine("Excepción:{0}",ee.ToString());
}
}
}
}