Главная /
PHP: ООП и классы /
Для расширения функциональности класса cFunctional был разработан класс cFunctionalExtended. Конструктор нового класса не изменяет способ генерации значений полей родителя при создании объекта, поэтому было принято решение повторно использовать старый код
Для расширения функциональности класса cFunctional
был разработан класс cFunctionalExtended
. Конструктор нового класса не изменяет способ генерации значений полей родителя при создании объекта, поэтому было принято решение повторно использовать старый код. Содержимое файла class.Functional.php:
<?php
class cFunctional
{
/*базовая функциональность*/
public $LastWarning; protected $Mode; private $TempFilename;
function __construct($_Mode,$_TempFilename)
{
if($_Mode<=0)
{
$this->Mode = 0;
$this->LastWarning = "Invalid mode, mode set to 0";
}
else
$this->Mode = $_Mode;
$this->TempFilename = $_TempFilename;
}
}
class cFunctionalExtended extends cFunctional
{
/*расширенная функциональность*/
protected $AdditionalData;
function __construct($_Mode,$_TempFilename,$_AdditionalData)
{
___;
$this->AdditionalData = $_AdditionalData;
}
}
?>
Среди приведенных ниже фрагментов укажите все варианты кода, подстановка которого вместо знаков подчеркивания решит поставленную задачу:
вопрос
Правильный ответ:
$this->__construct($_Mode,$_TempFilename)
$parent->__construct($_Mode,$_TempFilename)
parent::__construct($_Mode,$_TempFilename)
self:: __construct($_Mode,$_TempFilename)
решение поставленной задачи невозможно, так как поле с модификатором доступа
private
в родительском классе недоступно из производного класса Сложность вопроса
77
Сложность курса: PHP: ООП и классы
88
Оценить вопрос
Комментарии:
Аноним
Это очень намудрённый тест intuit.
19 авг 2020
Другие ответы на вопросы из темы программирование интуит.
- # Если в классе объявлен абстрактный метод, а сам класс не объявлен абстрактным, то
- # Сценарий PHP содержит следующий код: <?php function __autoload($_class) { ___; } $foo = new class_MyClass; ?> Код является частью проекта, в котором договоренности именования установлены следующим образом: имена классов состоят из собственно названия класса и предшествующего ему "class_", и для каждого класса есть файл, содержащие полное определение этого класса, причем имя файла имеет вид "class.c_название_класса.php". Среди приведенных ниже фрагментов укажите вариант кода, при подстановке которого вместо знаков подчеркивания сценарий будет работать корректно в соответствии с вышеуказанными условиями:
- # Сценарий PHP содержит следующий код: <?php function __autoload($_class) { ___; } $reader = new cReader; ?> Код является частью проекта, в котором договоренности именования установлены следующим образом: имена классов состоят из собственно названия класса и предшествующего ему символа "c", и для каждого класса есть файл, содержащие полное определение этого класса, причем имя файла имеет вид "class.название_класса.php". Среди приведенных ниже фрагментов укажите вариант кода, при подстановке которого вместо знаков подчеркивания сценарий будет работать корректно в соответствии с вышеуказанными условиями:
- # Сценарий PHP содержит следующий код: <?php class cFoo implements Iterator { private $Contents = array(); public $OperationCount = 0; public function __construct($_Contents) { $this->Contents = $_Contents; } public function rewind() { $this->OperationCount++; reset($this->Contents); } public function current() { return current($this->Contents); } public function key() { return key($this->Contents); } public function next() { return next($this->Contents); } public function valid() { $this->OperationCount++; return ($this->current() !== false); } } $foo = new cFoo(array("a","b","c","d")); $temp = 0; foreach ($foo as $bar) { $temp++; } echo $foo->OperationCount; ?> Укажите результат выполнения сценария:
- # Выполнение блока catch при возникновении исключения происходит