русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Модификаторы доступа


Дата добавления: 2013-12-23; просмотров: 1316; Нарушение авторских прав


Права доступа к членам класса

Деструктор

Параметры по умолчанию

Как и для обычных функций и методов, для конструкторов можно задавать параметры по умолчанию. Например, объявив его следующим образом:

function __construct($re=0, $im=0) {

$this->re = $re;

$this->im = $im; }

мы заставим РНР корректно воспринимать следующие четыре команды:

$а = new Math_Complex2;

$а = new Math_Complex2();

$а = new Math_Complex2(101);

$a - new Math_Complex2(101, 303);

При этом недостающие параметры будут заполнены значениями по умолчанию.

При использовании объектов возникает проблема корректного освобождения ресурсов. Это объясняется тем, что объект при работе может использовать не только свои собственные свойства, но также и другие объекты, а также, что самое важное, различные внешние ресурсы (файлы, потоки, соединения с СУБД и т. д.).

Деструктор — специальный метод объекта, который вызывается при уничтожении этого объекта (например, после завершения программы). Деструкторы обычно выполняют служебную работу — закрывают файлы, записывают протоколы работы, разрывают соединения, освобождают ресурсы. В ранних версиях РНР, включая РНР 4, деструкторы не поддерживались. Деструктор — это специальный метод класса с именем __destruct(), который будет гарантированно вызван при потере последней ссылки на объект в программе. Так как деструктор запускается самим РНР, он не должен принимать никаких параметров.

В крупных программах, а также законченных библиотеках следует ограничивать доступ к свойствам и методам классов, разрешая только то, что действительно необходимо программе, и "скрывая" все остальное.

Чаще всего стараются не делать открытыми свойства класса, предоставляя доступ к ним только через специальные методы. Так можно, например, запретить в программе изменение того или иного свойства.



В отличие от РНР 4, в РНР версии 5 существуют три модификатора ограничения доступа: public, protected и private. Их можно указывать перед описанием метода или свойства класса.

1. public: открытый доступ. Члены класса, помеченные ключевым словом public, доступны для использования извне класса (например, из вызывающей программы).

class Hotel {

public $exit;

public function escape() {

echo "Let's go through the {$this->exit}!";

}

}

$theLafayette = new Hotel();

$theLafayette->exit = "main wet wall"; // допустимо

$theLafayette->escape(); // допустимо

В РНР по умолчанию подразумевается модификатор public. Таким образом, если вы не укажете никакого модификатора при описании метода или свойства (например, воспользуетесь ключевым словом var), член класса будет доступен для вызывающей программы.

2. Private:доступ только из методов класса.С использованием ключевого слова private ( "закрытый") вы можете сделать члены касса "невидимыми" из вызывающей программы, будто бы их и нет. В то же время, методы "своего" класса могут обращаться к ним без всякого ограничения.

class Hotel {

private $exit;

public function escape() {

$this->findWayOut(); // допустимо

echo "Let's go through the {$this->exit}!"; // допустимо

}

public function lock() { $this->exit = null; }

private function findWayOut() {

$this->exit = "main wet wall"; //допустимо

}

}

$theLafayette = new Hotel();

$theLafayette->findWayOut(); // Ошибка! Доступ закрыт!

$theLafayette->escape(); // допустимо

$theLafayette->exit = "hotel doors"; // Ошибка! Доступ закрыт!

Модификатор private включает максимально возможные ограничения на доступ к членам класса. Он разрабатывался специально для того, чтобы запретить прямое изменение свойств объекта, а также доступ к различным служебным методам.

Существует один интересный прием применения private-методов класса — это объявление конструктора или деструктора "личным". При наличии private-конструктора объекты класса нельзя будет создать из вызывающей программы, зато это можно делать из какого-нибудь метода класса. Соответственно, объект, имеющий private-деструктор, не может быть уничтожен ниоткуда, кроме как из одного из членов класса — иначе возникнет ошибка во время выполнения программы.

3. Protected: доступ из методов производного класса. Модификатор protected ("защищенный") с точки зрения вызывающей программы выглядит точно так же, как и private: он запрещает доступ к членам объекта извне. Однако по сравнению с private он позволяет обращаться к членам не только из "своих" методов, но также и из методов производных классов (если используется наследование). "защищенными" обычно делают лишь методы, но не свойства классов.



<== предыдущая лекция | следующая лекция ==>
Конструктор | Наследование и виртуальные методы


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.003 сек.