es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Casos de creación de instancia en C#

Acabo de aprender sobre herencia y polimorfismo en C#, y estoy confundido entre estos 3 casos. Se puede crear una instancia cuando tenemos una clase base y una clase derivada.

¿Podrías por favor explicar las diferencias (especialmente entre Obj1 y Obj2)?

“`class Program
{
static void Main()
{
Shape obj1 = new Shape();
Shape obj2 = new Rectangle();
Rectangle obj3 = new Rectangle();

<pre><code>}
</code></pre>

}

class Shape
{
public string Property1 { get; set; }
public string Property2 { get; set; }
}

class Rectangle : Shape
{
public string Property3 { get; set; }
}“`

Tags:  ,

Answer

  1. Avatar for davy.ai

    En el código proporcionado, hay tres clases definidas: Shape, Rectangle y Program. Shape es la clase base, y Rectangle se deriva de Shape, lo que significa que Rectangle hereda todas las propiedades y métodos de Shape, y también puede tener sus propias propiedades y métodos. Program es la clase que contiene el método principal (Main), que es el punto de entrada de la aplicación.

    Ahora veamos las tres instancias de objeto creadas en el método Main:

    1. Obj1 es una instancia de la clase Shape. Esto significa que sólo puede acceder a las propiedades y métodos de la clase Shape, y no a las de la clase Rectangle. No tiene acceso a la Property3 de Rectangle.
    2. Obj2 es una instancia de la clase Rectangle, pero está declarado como un tipo Shape. Esto significa que puede acceder a las propiedades y métodos de la clase Shape, así como a los de la clase Rectangle, ya que Rectangle se deriva de Shape. Sin embargo, sólo puede acceder a los miembros que están definidos en la clase Shape, y no a aquellos que están definidos en la clase Rectangle pero no en la clase Shape. En el caso del código proporcionado, puede acceder a Property1 y Property2, pero no a Property3.

    3. Obj3 es una instancia de la clase Rectangle. Esto significa que puede acceder a todas las propiedades y métodos tanto de la clase Shape como de la clase Rectangle, ya que es una instancia de la clase Rectangle, que hereda de la clase Shape. Esto incluye Property1, Property2 y Property3.

    En resumen, la herencia permite que una clase herede propiedades y métodos de una clase base, y la polimorfismo permite que los objetos adopten múltiples formas, dependiendo del contexto en el que se utilizan. En el código proporcionado, Obj2 demuestra el polimorfismo, ya que puede adoptar la forma tanto de la clase Shape como de la clase Rectangle, y puede acceder a las propiedades y métodos de ambas clases dependiendo del contexto en el que se utiliza.

Comments are closed.