Questão nº 35
Questão de Tecnologia da Informação · FCC TRT-1 2025 (nº 35)
Considere o seguinte trecho de código PHP que utiliza herança de classe. O código calcula o valor das férias de um trabalhador, incluindo o adicional de 1/3 sobre o salário.
<?php
class FeriasBase {
public function calcularFerias($salario, $dias) {
return ($salario / 30) * $dias;
}
}
class FeriasComBonus extends FeriasBase {
public function calcularFeriasComBonus($salario, $dias) {
$feriasBase = I;
return $feriasBase + ($salario * 0.33);
}
}
Para que o trecho de código acima possa ser executado em condições ideais, a lacuna I deve ser corretamente preenchida com:
- A
FeriasBase::calcularFerias($salario, $dias) - B
self::calcularFerias($salario, $dias) - C
parent.calcularFerias($salario, $dias) - D
$this.calcularFerias($salario, $dias) - E
parent::calcularFerias($salario, $dias)(alternativa correta)
Resposta comentada
Gabarito Alternativa E
Em herança, uma classe filha pode reutilizar e estender o código de uma classe pai. Para chamar um método da classe pai a partir da classe filha, usamos a palavra-chave parent::.
(A) Incorreta: FeriasBase::calcularFerias($salario, $dias) faria uma chamada estática ao método, o que não é o ideal para métodos de instância e pode causar problemas se o método calcularFerias dependesse do contexto do objeto ($this).
(B) Incorreta: self::calcularFerias($salario, $dias) chamaria o método calcularFerias da própria classe FeriasComBonus. Se FeriasComBonus tivesse um método calcularFerias (sobrescrevendo o da classe pai), isso levaria a uma chamada recursiva infinita ou a um comportamento inesperado.
(C) Incorreta: parent.calcularFerias($salario, $dias) usa o operador . que é para concatenação de strings em PHP, não para acesso a membros de classe ou objeto. A sintaxe está incorreta.
(D) Incorreta: $this.calcularFerias($salario, $dias) também usa o operador . incorretamente. Para chamar um método de instância, seria $this->calcularFerias($salario, $dias). No entanto, $this-> chamaria o método calcularFerias da própria instância (FeriasComBonus), e não especificamente o da classe pai.
(E) Correta: parent::calcularFerias($salario, $dias) é a sintaxe correta e idiomática em PHP para invocar um método da classe pai imediata. Isso garante que o cálculo base das férias seja obtido da classe FeriasBase antes de adicionar o bônus, independentemente de haver um método calcularFerias na classe FeriasComBonus.
Fonte: FCC TRT-1 2025 Analista Judiciário - Área Apoio Especializado - Especialidade Tecnologia da Informação (Caderno Tipo 004). Reproduzida para fins de estudo.