Что такое конструктор в объектно-ориентированном программировании
В этой статье мы продолжим изучать объектно-ориентированное программирование. В прошлой статье мы рассказали: Что такое класс, инкапсуляция, полиморфизм, наследование. Сегодня мы узнаем: Что такое конструктор в объектно-ориентированном программировании и как его использовать при написании программ в ООП стиле.
Web-hosting rating: 8 out of 10 with 325 ratings

Что такое конструктор

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

В прошлой статье, при рассмотрении парадигмы ООП, мы узнали, что такое классы и научились создавать экземпляры классов.

 

 

Давайте освежим знания и напишем простой класс на языке программирования PHP.

 

Пример простого класса:


// Это класс Car
class Car {
	public $model = "car";
	public $color = "red";
	public $maxSpeed = 30;
	public $currentSpeed = 0;
}

// Так создается экземпляр класс Car
$car = new Car();

// Выведем значение $model
echo $car->model;

Если выполнить программу, на мониторе вы увидите название модели автомобиля: car


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

Наш Car - пока еще не очень функциональный автомобиль. Он не умеет ездить, а знает только какая у него модель $model,  цвет $color, максимальная скорость $maxSpeed и текущая скорость $currentSpeed.

 

Создадим еще один автомобиль:

$superCar = new Car();

 

Наш superCar ничем не отличается от обычного $car. И это очень плохо, так как нашему покупателю мы пообещали продать автомобиль с более высокими характеристиками, чем прошлый автомобиль.

Мы можем задать свойства автомобиля после создания экземпляра класса, но это будет выглядеть перед покупателем примерно так: Сейчас мы заменим двигатель, перекрасим, подождите пожалуйста часов 20, а еще лучше недельку. Думаю, что покупателю это не понравится и он уйдет из нашего автомобильного салона.

В объектно-ориентированном программировании принято инициализировать переменные при создании экземпляра класса. Для этого мы воспользуемся конструктором. 

 

На языке программирования PHP пустой конструктор выглядит так:


public function __construct() {
	
}

 

Давайте встроим его в наш класс Car и создадим возможность присваивать переменным значения, при создании экземпляра класса:


class Car {
	public $model;
	public $color;
	public $maxSpeed;
	public $currentSpeed;

	public function __construct($model, $color, $maxSpeed, $currentSpeed) {
		$this->model = $model;
		$this->color = $color;
		$this->maxSpeed = $maxSpeed;
		$this->currentSpeed = $currentSpeed;
	}
}

 

А сейчас создадим сразу два автомобиля и зададим значения свойств при создании экземпляров классов:


$car = new Car("car", "red", "100", "0");
$superCar = new Car("supercar", "green", "400", "0");

echo $car->model;
echo $superCar->model;

 

Как вы видите, у обычного автомобиля (класс Car) мы задали модель = car, цвет = red, максимальную скорость = 100, текущую скорость = 0, а для supercar мы задали улучшенные характеристики при создании экземпляра класса.

 

Выводы

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

В следующих статьях мы разберем важные методы ООП программирования - геттеры и сеттеры, расскажем что такое public, static, private, protected.

Вступайте в нашу группу VK и следите за обновлениями.





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


Что такое NodeJS и npm?

XAMPP - как установить и настроить на Mac (Mojave, Sierra)

Как самостоятельно изучить веб-программирование

Взломали Cкайп, что делать?

Что такое реферальный спам в Google Analytics

Постраничная ленивая загрузка (lazy load) постов

Как стать профессиональным веб-разработчиком

Методы setTimeout и setInterval в Javascript

Реализация Lazy Load на Jquery

Три полезных CSS свойства для работы с изображениями

Массивы в Javascript

Что такое TypeScript

CSS3 - Эффект вращения

Sublime Text 3 - удобный редактор кода для веб-разработчиков

Установка и настройка веб-сервера для сайта в Ubuntu

Полезные приложения для веб-разработчиков в Google Chrome

Модальное окно на Jquery

GIT команды: Быстрый старт для новичков

Что такое объектно-ориентированное программирование

Как отправить форму без перезагрузки страницы (AJAX)

Как быстро создать сайт и привлечь поисковый трафик

Bitbucket: Крутой облачный GIT репозиторий

Javascript: Классы в Javascript

Что такое веб-хостинг и как выбрать хостинг для сайта

SQL запросы: Основы администрирования MySQL

Команды Linux: оболочка BASH

Joomla CMS: Преимущества и недостатки

Качественный сайт: семь ключевых свойств



Все материалы с сайта wh-db.com и ru.wh-db.com защищены авторским правом. Копирование, публикация, продажа и распространение материала строго запрещены.



Комментарии





Роберт ответить
Я создал класс и конструктор из этого примера, отнаследовал его. Пытаюсь обратиться к классу - родителю, но данные между классами не передаются. Что я не так делаю?
Александр ответить
Вы указали в классе предка в конструкторе parent::__construct(); ? Если нет, тогда нужно указывать. Здесь же про это написано: http://ru.wh-db.com/article/chto-takoe-objecno-orientirovannoe-programmirovanie/

Оставить комментарий









Поиск хостинга



HDD (mb)
8000
Максимальная цена за месяц, (RUB)
700

Дополнительно







Новые статьи

















ВСЕ СТАТЬИ


Обзоры хостинга















Категории


24x7 Support Web Hosting
Angular JS Web Hosting
Apache Web Hosting
ASP.NET Web Hosting
CPanel Web Hosting
Cron Web Hosting
DirectAdmin Web Hosting
Django Web Hosting
EMail Web Hosting
FireBird Web Hosting
Free Domain Web Hosting
GIT Web Hosting
Jabber Web Hosting
Java Web Hosting
JavaScript Web Hosting
JBoss Web Hosting
JSP Web Hosting
Linux Web Hosting
MERCURIAL Web Hosting
MongoDB Web Hosting
MySQL Web Hosting
NGinx Web Hosting
NodeJS Web Hosting
Perl Web Hosting
PHP Web Hosting
PostgreSQL Web Hosting
Python Web Hosting
Ruby Web Hosting
Russian Web Hosting
Servlets Web Hosting
Spring Web Hosting
SQLite Web Hosting
SSH Web Hosting
SSL Web Hosting
Stream Web Hosting
SVN Web Hosting
TomCat Web Hosting
Unlimited HDD Space Web Hosting
Unlimited Sites Web Hosting
Unlimited Traffic Web Hosting
USA Web Hosting
VmWare Web Hosting
Windows Web Hosting