Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

рабочая тетрадь(3)

.pdf
Скачиваний:
40
Добавлен:
10.02.2016
Размер:
5.34 Mб
Скачать

class 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 (закрытый)

ограничивает область видимости так, что доступ к нему имеет только тот класс, в котором объявлен сам элемент

/* class B extends A */ function getParentZ(){ return $this->getZ();
}
/* class A */ public $x = 1; protected $y = 2; private $z = 3;
function getX(){return $this->x;} function getY(){return $this->y;} function getZ(){return $this->z;}

$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!';}

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]