Programación net IIUnidad 2. Herencia y polimorfismo en el lenguaje de programación C Sharp SECRETARIA DE EDUCACION PUBLICA Actividad 1. Herencia Unidad 2. Herencia y polimorfismo en el lenguaje de programación C Sharp Iván Alexander Maldonado Ibarra Ciencias Exactas, Ingeniería y Tecnología | Desarrollo de Software 1 Width() { return widthInches. } // Explicit interface member implementation: float IDimensions. EJEMPLO interface IDimensions { float Length(). y nunca se implementa nada. float width) { lengthInches = length. Un ejemplo típico del uso de contratos son los Servicios WCF en . pero no a partir de varias clases. Una interfaz reúne un conjunto de miembros abstractos. con contrato.0f. Cada clase tiene su superclase (la clase superior en la jerarquía también llamada Clase base).Programación net II Unidad 2. Ciencias Exactas. widthInches = width. Herencia y polimorfismo en el lenguaje de programación C Sharp La herencia es una de las bases importantes de la programación orientada a objetos. } class Box : IDimensions { float lengthInches. } // Explicit interface member implementation: float IDimensions. Con la herencia todas las clases están clasificadas en una jerarquía estricta. 2 . Los miembros de una interfaz (todos) son públicos por defecto. } public static void Main() { // Declare a class instance "myBox": Box myBox = new Box(30. se llaman clases derivadas).Length() { return lengthInches. float Width(). La puntualización es que en una interfaz sólo se definen los miembros. Se utiliza estrictamen te para definir subclases.0f). 20.NET. CLASE Interface DEFINICION USO ALCANCE CARACTERISTICAS Debemos asociar interfaz con comportamie nto o mejor aún. Esto quiere decir que a partir de una clase se puede construir otra. Básicamente se trata de representar un contrato que debe Una interfaz en C# en realidad definen un conjunto de mensajes que se pueden aplicar a muchas clases de objetos a los que cada una de ellas debe responder de forma adecuada. Hay que tener en cuenta que Visual C# solamente soporta herencia simple y no herencia múltiple. Ingeniería y Tecnología | Desarrollo de Software public Box(float length. y cada clase puede tener una o más subclases (las clases inferiores en la jerarquía. Una interfaz expone un contrato que debe cumplirse. Gracias a ella se pueden definir clases nuevas que estén basadas en otras clases ya existentes. Es una clase que no se puede instanciar. float widthInches. Length()). GetSaludo(). Herencia y polimorfismo en el lenguaje de programación C Sharp // Declare an interface instance "myDimensions": IDimensions myDimensions = (IDimensions) myBox. Sin embargo. no es posible instanciar una clase abstracta.WriteLine("Length: {0}".WriteLine("Width: {0}". } } cumplir cualquier clase que implemente la interfaz. Abstracta Una Clase Abstracta define un contrato en donde las clases derivadas deben definir las funciones que la clase padre marca utilizando la palabra reservada abstract.Width()). además que la clase Una Clase Abstracta no permite que se creen objetos en ella. 17: } 18: } 19: 20: public class SaludoEnglish : Saludo 21: { Ciencias Exactas. Una clase abstracta puede contener lógica y funcionalidad.Console. myBox. Ingeniería y Tecnología | Desarrollo de Software 3 . no 1: namespace OOP 2: { 3: public abstract class Saludo 4: { 5: public abstract string GetSaludo(). myDimensions.Width()). para utilizar una clase abstracta.Console. myBox.WriteLine("Length: {0}". myDimensions. /* Print out the dimensions of the box by calling the methods from an instance of the interface: */ System.Console. // Print out the dimensions of the box: /* The following commented lines would produce compilation errors because they try to access an explicitly implemented interface member from a class instance: */ //System. Una Clase Abstracta define las funciones que una clase derivada debe implementa r. Su misión es proporciona r miembros comunes que serán compartido s por todas sus sub clases. 9: } 10: } 11: 12: public class SaludoSpanish : Saludo 13: { 14: public override string GetSaludo() 15: { 16: return "Hola".Format("{0} {1}".Programación net II Unidad 2. Muchas veces se confunde con clase base.WriteLine("Width: {0}".Console.Length()). 6: public string GetSaludoCompleto(string name) 7: { 8: return string. name). //System. algo que es coincidente con una clase base. Es decir. System. podemos sobre escribir los miembros. No obstante. tampoco puede ser una clase abstracta.7): error CS0509: 'ClaseDerivada' : cannot inherit from sealed class 'ClaseBase' sealed. Por esta razón. su principal uso es para prevenir la derivación no planeada. 25: } 26: } 27: } sealed class ClaseBase{ ClaseBase(){} } class ClaseDerivada : ClaseBase{ } class Sellada{ public static void Main(){ ClaseDerivada CD = new ClaseDerivada().14): (Location of symbol related to previous error) El error es porque ClaseDerivada no puede Ciencias Exactas. Sellada El modificador sealed se puede aplicar a clases.Programación net II Unidad 2. Puesto que nunca se pueden tenemos más remedio que heredar de ella. Una Clase sellada se utiliza para prevenir que una clase sea utilizada como una clase base. Una clase sellada no se puede utilizar como clase base. Ingeniería y Tecnología | Desarrollo de Software 4 .cs(4. 22: public override string GetSaludo() 23: { 24: return "Hello". Las clases selladas evitan la derivación. e incluso extender la clase que herede de ella con las particularidades que consideremos oportunas.cs(1. métodos y propiedades de estas. Una clase sellada no se puede heredar. métodos y funciones de una clase abstracta. Herencia y polimorfismo en el lenguaje de programación C Sharp padre también se define como abstract. } } Al compilar el código se muestra el siguiente mensaje: sealed. algunas optimizacio nes en tiempo de ejecución pueden hacer que sea un poco más rápido llamar a miembros de clase sellada.Programación net II Unidad 2. utilizar ClaseBase como una clase base porque ClaseBase es sealed. no permite derivaciones. Herencia y polimorfismo en el lenguaje de programación C Sharp utilizar como clase base. Ingeniería y Tecnología | Desarrollo de Software 5 . Ciencias Exactas. es decir.