
Uma classe abstrata é aquela que se destina apenas a ser uma classe base de outras classes. O modificador 'abstrato' é usado para fazer um resumo de classe. Um modificador abstrato indica que há alguma implementação ausente que precisa ser implementada na classe derivada dela. A classe abstrata pode ter membros abstratos e não abstratos. Uma classe abstrata deve ter pelo menos um método abstrato, caso contrário, não há uso de declarar essa classe como "abstrata".
Exemplo de classe abstrata em c #:
classe abstrata MyCircle {resumo public int Area (); } Classe MyArea: MyCircle {public override área int () {lado do retorno * lado; .....}1 2 3 4 5 6 7 8 9 10 11 | classe abstrata MyCircle {resumo public int Area (); } Classe MyArea: MyCircle {public override área int () {lado do retorno * lado; . . . . . }} |
Como mostrado no exemplo acima, o método abstrato 'Área' dentro da classe MyCircle é substituído na classe derivada MyArea.
Interface
Uma interface contém apenas a declaração de membros, incluindo métodos, propriedades, eventos ou indexadores. Não contém a implementação desses membros. Uma classe ou struct implementa a interface, deve fornecer a definição dos métodos declarados na interface. Isso significa que uma interface fornece uma estrutura padrão que a classe derivada precisa seguir.
Exemplo de uma interface em c #:
using System.Collections.Generic; using System.Linq; using System.Text; namespace MyName {public interface MyData {void getdata (); void showdata (); } public class NameData: MyData {double public getdata () {nome da cadeia; Console.WriteLine ("Digite o nome:"); name = Console.ReadLine (); } public void showdata () {Console.WriteLine ("Meu nome é:", nome); }}}1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | usando o sistema. Coleções Genérico ; usando o sistema. Linq; usando o sistema. Texto; namespace MyName {public interface MyData {void getdata (); void showdata (); } public class NameData: MyData {double public getdata () {nome da cadeia; Console. WriteLine ("Digite o nome:"); name = Console. Leia a linha ( ) ; } public void showdata () {Console. WriteLine ("Meu nome é:", nome); }}} |
Como mostrado no exemplo acima, a interface MyData tem duas declarações de método getdata () e showdata (). A classe NameData que está implementando essa interface deve fornecer a definição dos métodos declarados na interface MyData.
Diferença entre classe abstrata e interface
- Uma classe abstrata pode ter membros abstratos e não-abstratos. Mas, em uma interface, todos os membros são implicitamente abstratos e devem ser substituídos na classe derivada.
- Uma classe pode herdar várias interfaces, mas apenas uma classe abstrata.
- Uma classe abstrata pode conter métodos com ou com uma definição. Mas, uma interface só pode conter assinatura de método.
- Uma classe abstrata pode ser total ou parcialmente implementada, mas uma interface deve ser totalmente implementada, ou seja, todos os membros devem ser definidos na classe derivada.
- Uma interface não pode conter modificadores de acesso, mas uma classe abstrata pode tê-lo para funções, propriedades ou eventos.