Questão nº 31
Questão de Tecnologias da Informação · FCC SEFAZ-SC 2018 - Conhecimentos Específicos (P3) (nº 31)
Herança e interfaces são conceitos da orientação a objetos que permitem, respectivamente, a reutilização de código e o estabelecimento de contratos de obrigatoriedade na implementação de certas funcionalidades. Em C#,
- Amétodos declarados em uma interface só podem ser públicos ou protegidos e não podem possuir implementação.
- Bpara declarar que uma classe chamada `PessoaJuridica` implementa uma interface chamada `ITributavel` utiliza-se o comando `public class PessoaJuridica: implements ITributavel { }`.
- Cinterfaces são mais complexas do que classes já que necessitam de atributos e métodos com implementação e sintaxe diferenciada.
- Dherança múltipla (quando uma subclasse é filha de mais de uma superclasse) não é suportada, porém, cada classe pode implementar diversas interfaces diferentes. (alternativa correta)
- Epara declarar que a classe chamada `Funcionario` herda a classe `Pessoa` e implementa a interface ITributável utiliza-se o comando `public class Funcionario extends Pessoa: implements ITributavel { }`.
Resposta comentada
Gabarito Alternativa D
Em Orientação a Objetos, a herança permite que uma classe (subclasse) reutilize e estenda o comportamento de outra (superclasse), enquanto interfaces definem um conjunto de funcionalidades que uma classe deve obrigatoriamente implementar, agindo como um contrato.
(A) Incorreta: Em C#, métodos de interfaces são implicitamente `public` e não podem ter modificadores de acesso como `protected`. Além disso, a partir do C# 8, interfaces podem sim possuir implementação padrão (default implementation) para seus métodos.
(B) Incorreta: A sintaxe para implementar uma interface em C# utiliza apenas o caractere de dois pontos `:`, não a palavra-chave `implements`. O correto seria `public class PessoaJuridica : ITributavel { }`. (Armadilha da banca: mistura sintaxe de C# com Java, um erro comum para quem conhece ambas as linguagens.)
(C) Incorreta: Interfaces são geralmente menos complexas que classes no sentido de que elas definem apenas o contrato (assinaturas de métodos e propriedades), sem atributos (campos) e, tradicionalmente, sem implementação de métodos. Classes, por outro lado, contêm atributos e a implementação completa.
(D) Correta: Em C#, uma classe pode herdar de apenas uma única classe base (não há herança múltipla de classes), mas pode implementar múltiplas interfaces. Isso oferece flexibilidade de contrato sem os problemas de ambiguidade da herança múltipla de implementação.
(E) Incorreta: A sintaxe para herdar uma classe e implementar uma interface em C# usa o caractere de dois pontos `:` para ambos, separando-os por vírgula. O correto seria `public class Funcionario : Pessoa, ITributavel { }`. As palavras-chave `extends` e `implements` são da sintaxe Java.
Fonte: FCC SEFAZ-SC 2018 - Conhecimentos Específicos (P3) Tecnologia da Informação (Caderno Tipo 1). Reproduzida para fins de estudo.