Os seguintes códigos PHP servem de base para a questão. Considera-se que todos os arquivos estão no mesmo diretório.
//Empresa.class.php
<?php
class Empresa {
private $nome;
private $nrFuncionarios;
function __construct($nome, $nrFuncionarios) {
$this->nome = $nome;
$this->nrFuncionarios = $nrFuncionarios;
}
public function getNome() {
return $this->nome;
}
public function setNome($nome) {
$this->nome = $nome;
}
}
?>
// Loja.class.php
<?php
class Loja extends Empresa {
private $segmento;
function __construct($nome, $cnpj, $segmento) {
parent::__construct($nome, $cnpj);
$this->segmento;
}
public function getSegmento() {
return $this->segmento;
}
public function setSegmento($segmento) {
$this->segmento = $segmento;
}
}
?>
// Hotel.class.php
<?php
final class Hotel extends Empresa {
private $nrQuartos;
function __construct($nome, $cnpj, $nrQuartos) {
parent::__construct($nome, $cnpj);
$this->nrQuartos = $nrQuartos;
}
public function getNrQuartos() {
return $this->nrQuartos;
}
public function setNrQuartos($nrQuartos) {
$this->nrQuartos = $nrQuartos;
}
}
// exemplo.php
<?php
include_once '/Empresa.class.php';
include_once '/Hotel.class.php';
include_once '/Loja.class.php';
$l = new Loja("X", 10, "Musical");
?>
Sobre os conceitos de orientação a objetos, empregados nesses arquivos, afirmam-se:
I. Tanto os objetos da classe Loja quanto os objetos da classe Hotel herdarão características da classe Empresa.
II. A classe Hotel não poderá ser estendida.
III. Hotel é uma superclasse.
IV. Todos os métodos da classe Empresa são sobrescritos na classe Loja.
V. A classe Loja não poderá ser estendida.
Estão corretas apenas as afirmativas