TOC

This article has been localized into Portuguese by the community.

Classes:

Mais classes abstratas

No capítulo anterior, vimos as classes abstratas. Neste capítulo, vamos expandir os exemplos um pouco e lançar alguns métodos abstratos também. Métodos abstratos só são permitidos dentro de classes abstratas. Sua definição parecerá um método regular, mas eles não têm código dentro deles:

abstract class FourLeggedAnimal
{
    public abstract string Describe();
}

Então, por que você quer definir um método vazio que não faz nada? Porque um método abstrato é uma obrigação de implantar esse mesmo método em todas as subclasses. Na verdade, ele é verificado em tempo de compilação, para garantir que suas subclasses tenham esse método definido. Mais uma vez, essa é uma ótima maneira de criar uma classe base para algo, mantendo, ao mesmo tempo, uma certa quantidade de controle sobre o que as subclasses devem ser capazes de fazer. Com isso em mente, você sempre pode tratar uma subclasse como sua baseclass, sempre que precisar usar métodos definidos como abstract methods na baseclass. Por exemplo, considere o seguinte exemplo:

namespace AbstractClasses
{
    class Program
    {
        static void Main(string[] args)
        {
            System.Collections.ArrayList animalList = new System.Collections.ArrayList();
            animalList.Add(new Dog());
            animalList.Add(new Cat());
            foreach(FourLeggedAnimal animal in animalList)
                Console.WriteLine(animal.Describe());
            Console.ReadKey();
        }
    }

    abstract class FourLeggedAnimal
    {
        public abstract string Describe();
    }


    class Dog : FourLeggedAnimal
    {

        public override string Describe()
        {
            return "I'm a dog!";
        }
    }

    class Cat : FourLeggedAnimal
    {
        public override string Describe()
        {
            return "I'm a cat!";
        }
    }
}

Como você pode ver, criamos uma ArrayList para conter nossos animais. Em seguida, instanciamos um novo cachorro e um novo gato e os adicionamos à lista. Eles são instanciados como um Dog e um Cat, respectivamente, mas também são do tipo FourLeggedAnimal, e como o compilador sabe que as subclasses dessa classe contêm o método Describe(), você pode chamar esse método sem saber exatamente o método. tipo de animal. Então, por typecasting para o FourLeggedAnimal, que é o que fazemos no loop foreach, temos acesso aos membros das subclasses. Isso pode ser muito útil em muitos cenários.

This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!