Estou ciente de que esta é uma pergunta muito básica, mas um entrevistador me perguntou de uma forma muito ardilosa e eu estava desamparado :(
Conheço apenas a definição material ou teórica para uma interface e também a implementei em muitos projetos nos quais trabalhei. Mas eu realmente não entendo por que e como isso é útil.
Eu também não entendo nada de interface. ou seja, por exemplo, usamos
conn.Dispose();
em finalmente bloquear. Mas não vejo que a classe está implementando ou herdando a classe IDisposable
interface ( SqlConnection
), quero dizer. Estou me perguntando como posso simplesmente chamar o nome do método. Também na mesma coisa, não estou entendendo como o método Dispose funciona porque, precisamos implementar o corpo da função com nossa própria implementação para todos os métodos de interface. Então, como as interfaces são aceitas ou nomeadas como contratos? Essas perguntas continuaram rolando em minha mente até agora e, francamente, nunca vi nenhum fio condutor que explicasse minhas perguntas de uma forma que eu pudesse entender.
MSDN, como de costume, parece muito assustador e nenhuma linha é clara ( pessoal, desculpem-se por estarem em desenvolvimento de alto nível, eu sinto fortemente que qualquer código ou artigo deve alcançar a mente de qualquer pessoa que o veja, portanto, como muitos outros dizem, MSDN não é útil ).
O entrevistador disse:
Ele tem 5 métodos e está feliz em implementá-los na classe diretamente, mas se você tiver que ir para a classe ou interface Abstract, qual você escolherá e por quê? Eu respondi a ele todas as coisas que li em vários blogs, dizendo vantagens e desvantagens da classe abstrata e da interface, mas ele não está convencido, ele está tentando entender "Por que a interface" em geral. "Por que classe abstrata" em geral, mesmo se eu puder implementar os mesmos métodos apenas uma vez e não irei alterá-los.
Não vejo onde na net, poderia conseguir um artigo que me explicasse claramente sobre interfaces e seu funcionamento. Sou um daqueles muitos programadores que ainda não entendem de interfaces (conheço a teoria e os métodos que usei), mas não estou satisfeito de ter entendido claramente.
SqlConnection
herda o System.ComponentModel.Component
que implementa IDisposable
.
SqlConnection
implementa IDisposable
.