Мегаобучалка Главная | О нас | Обратная связь


Пример 8 (наследование классов)





Классы и объекты

На основе материала из книги: Джон Каггзолл «PHP5 Полное руководство» Глава 13, стр. 296-323

 

Рассматриваемые вопросы:

  1. Создание классов и объектов.
  2. Уровни доступа к членам класса (public, private, protected)
  3. Конструкторы и деструкторы
  4. Константы классов
  5. Статические методы.
  6. Наследование классов
  7. Клонирование
  8. Абстрактные классы

Создание классов и объектов.

В объектно-ориентированном программировании (ООП) большинство всех задач связано с разработкой классов.

Класс является детальным проектом объекта, определяющим все действия, которые могут быть выполнены над ним.

Поэтому описание класса содержит все переменные (свойства), функции (методы), а также константы.

Описание класса похоже на описание структуры. Рассмотрим пример такого описания справедливый как для PHP4, так и для PHP5.

Пример 1

<?php

class myPHP4Class

{

var $my_variable;

function my_method($param)

{

echo "Вызван метод my_method($param)!\n";

echo "Значение внутренней переменной: ";

echo "{$this->my_variable}\n";

}

}

?>

 

$this – это особая переменная внутри класса, представляющая экземпляр самого объекта. Она используется для доступа к свойствам и методам внутри созданного объекта.

 

После определения класса можно приступать к созданию объектов (экземпляров) класса.

Для этого применяют оператор new.

Пример 2

<?php

include_once (”myPHP4Class_def.php”)

$myinstance = new myPHP4Class();

$anotherinstance = new myPHP4Class();

?>

Переменные $myinstance и $anotherinstance представляют объекты типа myPHP4Class. и не зависят друг от друга.

Обращение к свойствам и методам класса осуществляется операцией ->

Пример 3

<?php

include_once (”myPHP4Class_def.php”)

$myinstance = new myPHP4Class();

$anotherinstance = new myPHP4class();

$myinstance->my_variable = 10;

$anotherinstance->my_variable = 20;

$myinstance->my_method("MyParam");

?>

Уровни доступа к членам класса (public, private, protected)

 

В PHP4 все методы и свойства классов были общедоступными, т.е. имели уровень доступа public.

В PHP5 введены 3 уровня доступа к членам класса: public, private, protected.

Следовательно для PHP5 пример 1 должен выглядеть иначе: (хотя работать будет)

 

Пример 4



<?php

class myPHP5Class

{

public $my_variable;

public function my_method($param)

{

echo "Вызван метод my_method($param)!\n";

echo "Значение внутренней переменной: ";

echo "{$this->my_variable}\n";

}

}

?>

К членам класса public (общедоступные) доступ может быть осуществлен из любого места в пределах сценария. Их можно вызывать и изменять как внутри объекта ($this) так и за его пределами (имя объекта -> имя свойства или имя метода).

К членам класса private (закрытые) доступ может быть осуществлен только из экземпляра этого класса (объекта) с помощью переменной $this.

Перепишем пример 4, введя уровень доступа private.

Пример 5

<?php

class myPHP5Class

{

private $my_variable;

public function my_method($param)

{

echo "Вызван метод my_method($param)!\n";

echo "Значение внутренней переменной: ";

echo "{$this->my_variable}\n";

}

}

$myobject = new myPHP5Class();

$myobject-> my_method(“MyParam”); //допустимая запись

$myobject->my_variable = 10; //приведет к ошибке

?>

Конструкторы и деструкторы

Это функции, вызываемые во время создания экземпляра объекта (конструкторы) и его удаления (деструкторы). Назначение: инициализация объекта и освобождение занимаемой им памяти.

В PHP4 доступны были только конструкторы и имена их должны были совпадать с именем класса.

В PHP5 имя конструктора: __construct(), имя деструктора: __destruct().

Пример 6

<?php

class SimpleClass

{

function __construct($param)

{

echo "Создан новый экземпляр SimpleClass!";

}

function __destruct()

{

echo "Разрушен данный экземпляр SimpleClass";

}

}

 

$myinstance = new SimpleClass("value");

unset($myinstance); // оператор уничтожающий данную переменную

?>

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

Константы классов

Константы классов – это нововведение в PHP5. Они позволяют определять постоянные значения в определениях класса. Такое определение константы осуществляется с помощью ключевого слова const, за которым следует имя константы и ее значение.

Пример 7

 

<?php

class ConstExample

{

private $myvar;

public $readme;

const MY_CONSTANT = 10;

 

public function showConstant()

{

echo "Значение: ".MY_CONSTANT;//Обратите внимание: нет $this (т.к. во всех объектах одинакова)

}

}

 

$inst = new ConstExample;

$inst->showConstant();

echo "Значение: ".ConstExample::MY_CONSTANT;

?>

 

Здесь показано использование констант классов как в самом классе, так и вне класса.

Обращение внутри класса к константе происходит напрямую.

Обращение к константе из вне класса осуществляется с помощью ссылки с указанием имени класса и имени константы в этом классе. (Формат: <Имя класса>::<Константа>).

 

Статические методы.

Статическими (static) называются методы, являющиеся частью класса, но созданные для вызова за пределами контекста конкретного экземпляра объекта. То есть статические методы можно вызывать когда не создан еще ни один объект. Возможность этого обусловлена запретом на использование в статических методах переменной $this, которая как было сказано ранее является ссылкой на объект.

Для создания статического метода перед его именем добавляется ключевое слово static.

static function myMetod()

{

………………………

 

}

Для вызова статического метода за пределами класса используется следующий синтаксис:

<Имя класса>::<Метод>

Что касается вызовов из содержимого объекта, то он также возможен и выглядит как обычный вызов метода объекта.

 

 

Наследование классов

Наследование это возможность расширять возможности одного класса (наследующего) функциональностью другого класса (наследуемого).

Когда один класс наследует другой, то все методы, свойства и константы родительского класса становятся доступными из класса-наследника. Однако при наследовании методов и свойств в классе наследнике будут доступны только те члены класса, которые были объявлены как public или protected. Чтобы один класс мог наследовать другой класс, в его определении ставится ключевое слово extends.

Пример 8 (наследование классов)

<?php

class ParentClass

{

public $parentvar;

 

public function parentOne()

{

echo "Called parentOne()\n";

}

 

private function parentTwo()

{

echo "Called parentTwo()!\n";

}

}

 

class ChildClass extends ParentClass

{

public function childOne()

{

echo "Called childOne()!\n";

}

/* В определении метода parentOne() нет необходимости,

так как он наследуется от класса ParentClass

parentTwo() не наследуется*/

}

 

$v = new ChildClass();

$v->parentOne();

?>

Итак, член класса объявленный как protected наследуется и будет доступен только в содержимом самого класса или любых его классов-наследников.

Член класса объявленный как private не наследуется и будет доступен только в содержимом самого класса.

Член класса объявленный как public наследуется и будет доступен в содержимом самого класса, любых его классов-наследников и извне.

 

Рассмотрим два примера:

 





Читайте также:

D.5 Примеры определения одометрического модуля по удельному сопротивлению грунта погружению зонда
D.7 Пример пределения предела прочности при сжатии (сопротивления сжатию) одиночной сваи
F.3 Пример метода расчета усадки фундаментов мелкого заложения
G.4 Примеры зависимости между результатами статического и динамического зондирования
I.1 Примеры определения поправочных коэффициентов для определения недренированного сопротивления сдвигу (без дренажа)
III. ПРИМЕРНАЯ СТРУКТУРА КУРСОВОЙ РАБОТЫ
Анализ и совершенствование системы стратегического управления персоналом (на примере Государственного Комитета Псковской области по дорожному хозяйству)
Анализ расходов на оплату труда на примере ИП Шевченко Л.Н.
В двоичной системе счисления (как и в других системах счисления, кроме десятичной) знаки читаются по одному. Например, число 1012 произносится «один ноль один».
В ходе анализа было выявлено значительное количество примеров. Рассмотрим примеры, взятые из статей разных рубрик, жанров данной газеты (см. Приложение).



Рекомендуемые страницы:


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



©2015-2020 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (452)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.013 сек.)