рабочая тетрадь(3)
.pdfclass Car {
public $numWheels = 4;
public function printWheels() { echo $this -> $numWheels;
}
}
class Toyota extends Car { public $country = 'Japan';
public function printWheels() {
echo 'Вызван метод '. __METHOD__;
}
}
$car = new Toyota(); $car -> printWheels();
class Car {
public $numWheels = 4;
public function printWheels() { echo $this -> $numWheels;
}
}
class Toyota extends Car { public $country = 'Japan';
public function printWheels() {
echo 'Вызван метод '. __METHOD__; parent:: printWheels();
}
}
$car = new Toyota(); $car -> printWheels();
Лабораторная работа 1.5
Использование родительских методов
Упражнение 1: Изменение методов класса SuperUser
•В текстовом редакторе откройте файл oop\users.php
•Измените конструктор класса SuperUser так, чтобы он принимал значение для свойства role
•Добавьте в конструктор вызов родительского конструктора
•Передайте родительскому конструктору необходимые значения
•Измените метод showInfo() класса SuperUser так, чтобы он вызывал родительский метод
•Добавьте в метод showInfo() вывод значения свойства role
•Измените код, который создает объект $user
•Сохраните файл oop\users.php
Упражнение 2: Проверка работы скрипта
•Запустите браузер
•Наберите в адресной строке браузера http://mysite.local/oop/users.php
•Проверьте работу скрипта. Если есть ошибки, найдите их и исправьте
Модификатор public (общедоступный)
позволяет иметь доступ к свойствам и методам классам из любого места
Модификатор protected (защищенный)
позволяет иметь доступ и родительскому (в котором определен сам член класса), и наследуемым классам
Модификатор private (закрытый)
ограничивает область видимости так, что доступ к нему имеет только тот класс, в котором объявлен сам элемент
$a = new A(); echo $a->x; echo $a->y; echo $a->z;
echo $a->getX(); echo $a->getY(); echo $a->getZ();
$b = new B(); echo $b->x; echo $b->y; echo $b->z;
echo $b->getX(); echo $b->getY(); echo $b->getZ();
echo $b->getParentZ();
try {
$a = 1; $b = 0;
if ($b == 0)
throw new Exception("Деление на 0!"); $c = $a / $b;
} catch(Exception $e) {
echo $e->getMessage(); echo $e->getLine(); echo $e->getFile();
}
class Human { public $name;
public $yearOfBorn;
function __construct($name, $year) { $name = $this->name;
$name = $this->year;
}
}
$billGates = new Human("Bill Gates", 1955); foreach ($billGates as $name => $value) {
echo $name . " : " . $value . "<br/>";
}
class Human {
const HANDS = 2;
function printHands() { echo self::HANDS;
}
}
echo "Количество рук: " . Human::HANDS;
abstract class Car { public $petrol;
function startEngine() {
echo 'Двигатель завелся!';
}
abstract function stopEngine();
}
class InjectorCar extends Car { function stopEngine() {
echo 'Двигатель остановился!';
}
}
$megaCar = new Car(); // Ошибка! $megaCar = new InjectorCar(); $megaCar -> stopEngine();
interface Hand {
function useKeyboard(); function touchNose();
}
interface Foot { function runFast();
function playFootball();
}
class Human implements Hand, Foot {
function useKeyboard() {echo 'Use keyboard!';} function touchNose() {echo 'Touch nose!';} function runFast() {echo 'Run fast!';}
function playFootball() {echo 'Play football!';}
}