C # fundamentos del aprendizaje abstracto

C # fundamentos del aprendizaje abstracto

1. Definición

Las clases abstractas se utilizan a menudo para caracterizar los conceptos abstractos derivados del análisis y diseño del dominio del problema, es una abstracción de una serie de conceptos concretos que parecen diferentes pero son esencialmente iguales.

2. Características

  • No se puede crear una instancia, se usa principalmente para herencia

  • Puede contener dos tipos de miembros abstractos, a saber, atributos abstractos y métodos abstractos , y puede contener otros miembros no abstractos.

  • Si hereda la clase abstracta, debe implementar las propiedades y métodos abstractos de la clase abstracta

  • La palabra clave Sealed no se puede utilizar para modificar la clase abstracta, porque Sealed significa que la clase no se puede heredar y Static no puede modificar la clase abstracta.

En resumen, las clases abstractas se utilizan para la herencia, y las subclases después de la herencia deben seguir la voluntad de la clase abstracta para realizar la voluntad, es decir, heredar todos los métodos abstractos y propiedades abstractas en la clase abstracta.

Ejemplo de aplicación simple:

(1) Defina la clase abstracta Fruit. La clase abstracta tiene el atributo público vendedor, el atributo abstracto Price y el método abstracto GrowArea. El código es el siguiente:

namespace AbstractClassLearn
{
    public abstract class Fruit
    {
        public string vendor { get; set; }

        public abstract float Price { get; }

        public abstract void GrowArea();
    }
}

(2) Defina una clase de Apple que herede la clase abstracta, el código es el siguiente:

namespace AbstractClassLearn
{
    public class Apple : Fruit
    {
        public override float Price
        {
            get
            {
                if (vendor == "红富士")
                {
                    return 1000;
                }
                else return 0;
            }
        }

        public override void GrowArea()
        {
            Console.WriteLine("水果品种:" + vendor + "  " + "当前价格是:" + Price);
        }
    }
}

(3) Defina una clase Orange que herede la clase abstracta. El código es el siguiente:

namespace AbstractClassLearn
{
    public class Orange : Fruit
    {
        public override float Price
        {
            get
            {
                if (vendor == "橘子") return 200;
                else return 0;
            }
        }

        public override void GrowArea()
        {
            Console.WriteLine("水果品种:" + vendor + "  " + "当前价格是:" + Price);
        }
    }
}

(4) Ingrese en la función principal:

namespace AbstractClassLearn
{
    class Program
    {
        static void Main(string[] args)
        {
            Fruit f = new Apple();
            f.vendor = "苹果";
            f.GrowArea();

            f = new Orange();
            f.vendor = "橘子";
            f.GrowArea();

            Console.ReadKey();
        }
    }
}

El resultado se muestra en la siguiente figura:

3. ¿En qué circunstancias se deben utilizar las clases abstractas?

Por ejemplo: necesitamos crear objetos (clases) como "perro", "gato", "caballo", etc., y tienen algunas propiedades comunes como boca, cola, peso, color, tamaño, etc., pero son mutuamente excluyentes Existen diferencias entre los atributos (como el tamaño de la boca, el largo de la cola, etc.), en este caso sería más engorroso definir cada atributo uno por uno. Si usa clases abstractas, el proceso de implementación será muy conveniente.

También hay un aspecto mejor de las clases abstractas, es decir, "similitudes e imágenes diferentes", que se explica como: los métodos heredados que son esencialmente iguales en diferentes formas de implementación , como perros, gatos, caballos, etc., tienen diferentes métodos de respiración o diferentes formas de velocidad de carrera Defina métodos abstractos en clases abstractas, déjelos heredar de clases abstractas e implemente sus propias formas en métodos abstractos. El significado de abstracción radica en: extraer las cosas comunes y encapsularlas, pero no implementarlas sino heredarlas .

4. Resumen

  1. Los atributos abstractos y los métodos abstractos en la clase abstracta deben ser públicos, utilizando el modificador público

  2. La subclase debe anular todos los atributos abstractos y métodos abstractos en la clase abstracta. Si no se deben anular todas las propiedades y métodos abstractos en la clase abstracta, entonces la subclase debe ser una clase abstracta

  3. Una clase abstracta puede tener atributos no abstractos y métodos no abstractos, o puede ser privada o pública, pero si es privada, la subclase será inaccesible y sin sentido, por lo que generalmente se escribe como pública.

  4. Las clases con métodos abstractos o propiedades abstractas deben ser clases abstractas, y las propiedades o métodos en una clase abstracta no son necesariamente todas abstractas.

  5. Los métodos abstractos no pueden tener cuerpos de función, solo se pueden definir y no pueden contener implementaciones específicas. Las clases abstractas no se pueden instanciar, sino que solo se pueden heredar.

Supongo que te gusta

Origin blog.csdn.net/Kevin_Sun777/article/details/113884255
Recomendado
Clasificación