Questão nº 35
Questão de Tecnologia da Informação · FGV CVM 2024 (nº 35)
Observe as seguintes classes, definidas na sintaxe do PHP.
class SaidaSimples {
protected $texto;
public function __construct($texto){
$this->texto = $texto;}
public function render(){
echo($this->texto);}
}
class SaidaNegrito extends SaidaSimples{
public function render(){
echo("<b>");
#COMANDO
echo("</b>");
}
}
Se o objetivo de SaidaNegrito é imprimir o texto herdado de SaidaSimples na página, entre as etiquetas de formatação, o comentário #COMANDO deve ser substituído por:
- Aparent::render(); (alternativa correta)
- B$super->render();
- CSaidaSimples->render();
- Dbase::render();
- E$inherited->render();
Resposta comentada
Gabarito Alternativa A
Em programação orientada a objetos, quando uma classe filha (que herda de outra) precisa usar a funcionalidade de um método que existe na sua classe pai (a classe da qual ela herda), mas que foi sobrescrito na filha, ela usa a palavra-chave parent:: para se referir ao método do pai.
- (A) Correta:
parent::render();Esta é a forma correta em PHP de chamar um método da classe pai (SaidaSimples) a partir de um método sobrescrito na classe filha (SaidaNegrito). Isso permite que o métodorender()da classe pai seja executado, imprimindo o$texto, e então o resultado é envolvido pelas tags<b>e</b>adicionadas pela classe filha. - (B) Incorreta:
$super->render();A palavra-chave$supernão existe em PHP para referenciar a classe pai; é comum em linguagens como Java. - (C) Incorreta:
SaidaSimples->render();Esta sintaxe está incorreta para chamar um método de instância de uma classe pai. Mesmo que fosseSaidaSimples::render(), isso faria uma chamada estática e não passaria o contexto do objeto atual ($this) para o método pai, o que é necessário para acessar$this->texto. A armadilha aqui é que parece uma forma lógica de referenciar a classe, mas não funciona como esperado para métodos de instância em um contexto de herança. - (D) Incorreta:
base::render();A palavra-chavebase::não existe em PHP para referenciar a classe pai; é comum em linguagens como C#. - (E) Incorreta:
$inherited->render();Não existe uma palavra-chave ou variável$inheritedem PHP para referenciar a classe pai ou seus membros.
Fonte: FGV CVM 2024 Analista CVM - TI Sistemas e Desenvolvimento (Perfil 8) (Caderno Tipo 1). Reproduzida para fins de estudo.