Diferença Entre Virtual E Abstrato

Diferença Entre Virtual E Abstrato
Diferença Entre Virtual E Abstrato

Vídeo: Diferença Entre Virtual E Abstrato

Vídeo: Diferença Entre Virtual E Abstrato
Vídeo: Entenda de forma DEFINITIVA a DIFERENÇA entre classes ABSTRATAS e INTERFACES - POO 2024, Novembro
Anonim

Virtual vs Abstrato

Virtual e Abstract são duas palavras-chave usadas na maioria das linguagens de programação orientadas a objetos (OO), como Java e C #. Embora haja pequenas diferenças no que isso significa em diferentes linguagens, as palavras-chave Virtual e Abstract fornecem uma sensação de implementação parcial para as entidades às quais se anexam.

Resumo

Normalmente, as classes abstratas, também conhecidas como classes abstratas de base (ABC), não podem ser instanciadas (uma instância dessa classe não pode ser criada). Portanto, classes abstratas só são significativas se a linguagem de programação suportar herança (capacidade de criar subclasses a partir da extensão de uma classe). Classes abstratas geralmente representam um conceito ou entidade abstrata com implementação parcial ou nenhuma implementação. Portanto, as classes abstratas atuam como classes pai das quais as classes filho são derivadas, de modo que a classe filha compartilhe os recursos incompletos da classe pai e a funcionalidade pode ser adicionada para completá-los. As classes abstratas podem conter métodos abstratos. As subclasses que estendem uma classe abstrata podem implementar esses métodos abstratos (herdados). Se a classe filha implementa todos esses métodos Abstract, é uma classe concreta. Mas se isso não acontecer,a classe filha também se torna uma classe abstrata. O que tudo isso significa é que, quando o programador nomeia uma classe como Abstract, ele está dizendo que a classe estará incompleta e terá elementos que precisam ser completados pelas subclasses herdadas. Esta é uma boa maneira de criar um contrato entre dois programadores, o que simplifica as tarefas de desenvolvimento de software. O programador, que escreve código para herdar, precisa seguir exatamente as definições do método (mas é claro que pode ter sua própria implementação). Em Java e C #, as classes e métodos abstratos são declarados usando a palavra-chave Abstract. Esta é uma boa maneira de criar um contrato entre dois programadores, o que simplifica as tarefas de desenvolvimento de software. O programador, que escreve código para herdar, precisa seguir exatamente as definições do método (mas é claro que pode ter sua própria implementação). Em Java e C #, as classes e métodos abstratos são declarados usando a palavra-chave Abstract. Esta é uma boa maneira de criar um contrato entre dois programadores, o que simplifica as tarefas de desenvolvimento de software. O programador, que escreve código para herdar, precisa seguir exatamente as definições do método (mas é claro que pode ter sua própria implementação). Em Java e C #, as classes e métodos abstratos são declarados usando a palavra-chave Abstract.

Virtual

Métodos / funções virtuais fornecem a capacidade de substituir opcionalmente seu comportamento por uma classe herdada (usando uma função com a mesma assinatura). O conceito de função virtual é importante no seguinte cenário. Suponha que uma classe seja derivada por uma classe filha, então sempre que um objeto da classe derivada é usado, ele pode se referir a um objeto da classe base ou classe derivada. Porém, o comportamento da chamada do método pode ser ambíguo se os métodos da classe base forem substituídos. Portanto, para resolver essa ambigüidade, a palavra-chave Virtual é usada. Se o método estiver marcado como Virtual, a função da classe derivada é chamada (se houver) ou a função da classe base é chamada. Por exemplo, em C ++, a palavra-chave Virtual é usada exatamente para esse propósito. Em C #, a palavra-chave Virtual é usada de maneira semelhante, mas, além disso,a substituição de palavra-chave deve ser usada para modificar todos os métodos substituídos. Mas em Java, não existe uma palavra-chave virtual explícita. Todos os métodos não estáticos são considerados virtuais. As funções virtuais sem corpo são chamadas de funções virtuais puras. Em Java e C #, os métodos abstratos são, na verdade, puros virtuais.

Diferença entre virtual e abstrato

Embora Abstract e Virtual sejam duas palavras-chave / conceitos que fornecem um significado de implementação incompleta para suas entidades associadas, eles têm suas diferenças. Os métodos abstratos (que devem ser definidos dentro das classes Abstract) não possuem nenhuma implementação, enquanto os métodos virtuais podem ter uma implementação. Se os métodos Abstract são estendidos por uma classe concreta, todos os métodos Abstract herdados devem ser implementados, enquanto os métodos virtuais herdados podem ou não ser substituídos.

Recomendado: