Questão nº 26
Questão de Tecnologia da Informação · FCC PGE-AM 2022 (nº 26)
Considere este trecho de código em PHP, que não contém erros. A numeração das linhas não faz parte do código.
1 <?php
2 class Imprime {
3 public function printItem($string){
4 echo 'Imprime: ' . $string . PHP_EOL;
5 }
6 public function printPGEAM(){
7 echo ' Procuradoria Geral do Estado do Amazonas' . PHP_EOL;
8 }
9 }
10 class Impressao extends Imprime {
11 public function printItem($string){
12 echo 'Impressao: ' . $string . PHP_EOL;
13 }
14 }
15 $imprime = new Imprime();
16 $impressao = new Impressao();
17 $imprime->printItem('Engenharia de Software');
18 $imprime->printPGEAM();
19 $impressao->printItem('Engenharia de Software');
20 $impressao->printPGEAM();
21 ?>
Considerando os fundamentos da Orientação a Objetos e o código acima, é correto afirmar:
- AAs saídas das instruções das linhas 17 e 19 são iguais, ou seja, imprimem a mesma frase.
- BNa herança, ao se estender uma classe, a subclasse herda métodos públicos da classe pai. (alternativa correta)
- CAs saídas das instruções das linhas 18 e 20 são diferentes, ou seja, imprimem frases distintas.
- D`printPGEAM()` é o método construtor da classe `Imprime`.
- EOs métodos públicos de uma classe pai não são acessíveis a uma classe filha.
Resposta comentada
Gabarito Alternativa B
A herança é um conceito fundamental na Orientação a Objetos que permite que uma classe (chamada subclasse ou filha) reutilize e estenda o comportamento de outra classe (chamada superclasse ou pai), herdando seus atributos e métodos.
(A) Incorreta: A saída da linha 17 ($imprime->printItem(...)) é "Imprime: Engenharia de Software", enquanto a saída da linha 19 ($impressao->printItem(...)) é "Impressao: Engenharia de Software". Elas são diferentes porque o método printItem() foi sobrescrito (override) na classe Impressao.
(B) Correta: Este é um princípio básico da herança em programação orientada a objetos. Métodos e propriedades declarados como public na classe pai são automaticamente herdados e acessíveis na subclasse.
(C) Incorreta: A saída da linha 18 ($imprime->printPGEAM()) é " Procuradoria Geral do Estado do Amazonas" e a saída da linha 20 ($impressao->printPGEAM()) também é " Procuradoria Geral do Estado do Amazonas". Elas são idênticas porque o método printPGEAM() não foi sobrescrito na classe Impressao, sendo executado exatamente como herdado da classe Imprime. Armadilha da banca: Esta alternativa tenta confundir, sugerindo que todos os métodos herdados teriam um comportamento diferente, mesmo sem sobrescrita.
(D) Incorreta: O método construtor em PHP é sempre nomeado __construct(). printPGEAM() é um método público comum da classe Imprime, não o construtor.
(E) Incorreta: Pelo contrário, os métodos públicos (e também os protegidos) de uma classe pai são acessíveis e herdados por uma classe filha, o que é a base da reutilização de código na herança.
Fonte: FCC PGE-AM 2022 Técnico em Gestão Procuratorial - Especialidade Engenharia de Software (Caderno Tipo 001). Reproduzida para fins de estudo.