|
19 / 18 / 5
Регистрация: 01.02.2013
Сообщений: 171
|
|
Статические свойства и методы21.02.2016, 20:27. Показов 2134. Ответов 17
Метки нет (Все метки)
Здравствуйте!
Перелопатил не один видеоурок, прочитал мануал изучил описание статических переменных и методов в интернете, но понял только: - Статические переменные и методы принадлежат самому классу. На этом мое понимание в этой области закончилось. А освоить эту тему очень хочется. Возник ряд вопросов: 1. Для чего вообще нужны статические переменные и методы 2. Раскройте пожалуйста подробнее смысл "Статические переменные и методы принадлежат самому классу" 3. Приведите пожалуйста примеры, максимально простые, но так чтобы были понятны основные задачи статических переменных и(или) методов. Спасибо.
0
|
|
| 21.02.2016, 20:27 | |
|
Ответы с готовыми решениями:
17
Статические свойства и методы
Наследование и статические методы классы |
|
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
|
||||||||||
| 21.02.2016, 20:51 | ||||||||||
![]() По сути это сильно улучшенная версия глобальных переменных.
0
|
||||||||||
|
19 / 18 / 5
Регистрация: 01.02.2013
Сообщений: 171
|
||
| 21.02.2016, 20:57 [ТС] | ||
|
И в чем смысл статических методов?
0
|
||
|
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
|
|||||||
| 21.02.2016, 21:06 | |||||||
0
|
|||||||
|
19 / 18 / 5
Регистрация: 01.02.2013
Сообщений: 171
|
|
| 21.02.2016, 21:14 [ТС] | |
|
Ааааа, т.е., по сути, статические переменные это как ячейки в БД, хрянят записанные в них данные, до тех пор пока данные не будут уничтожены?
0
|
|
|
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
|
||||||||
| 21.02.2016, 21:16 | ||||||||
|
Для обращения к статическим свойствам не нужен объект:
0
|
||||||||
|
19 / 18 / 5
Регистрация: 01.02.2013
Сообщений: 171
|
|
| 21.02.2016, 21:29 [ТС] | |
|
Я тогда ничего не понял. В чем смысл тогда? Зачем статические переменные и методы вообще нужны?
0
|
|
|
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
|
||
| 21.02.2016, 21:36 | ||
|
0
|
||
|
19 / 18 / 5
Регистрация: 01.02.2013
Сообщений: 171
|
|
| 21.02.2016, 21:47 [ТС] | |
|
Ну хорошо, а что мне мешает в конструкторе создать переменную, которая будет увеличиваться на 1, дальше в гет метод ее засунуть и возвращать. Тот же подсчет кол-ва создания классов, разве я не прав?
0
|
|
|
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
|
|
| 21.02.2016, 21:50 | |
|
0
|
|
|
19 / 18 / 5
Регистрация: 01.02.2013
Сообщений: 171
|
||||||
| 21.02.2016, 22:22 [ТС] | ||||||
|
Вот 2 строки, которые добавляются при создании класса и считают сколько раз класс был создан.
Да по идее, даже одна строка, в принципе то вывод коунтера можно просто перед ?> прописать, в самом конце
0
|
||||||
|
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
|
||
| 21.02.2016, 22:32 | ||
|
Добавлено через 3 минуты А если у меня нет в текущей области видимости объекта? А зачем передавать текущее число объектов в метод? А вдруг это число не доступно в текущей области видимости? А как посчитать удаленные объекты? А если кто-то перезапишет переменную counter?
0
|
||
|
19 / 18 / 5
Регистрация: 01.02.2013
Сообщений: 171
|
|||||||
| 21.02.2016, 22:38 [ТС] | |||||||
|
Но тем не менее, если если а а а а, всё прекрасно работает.
0
|
|||||||
|
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
|
||
| 21.02.2016, 22:41 | ||
|
Твой вариант работает в 1 ситуации, которую очень легко испортить. Мой в любых.
0
|
||
|
19 / 18 / 5
Регистрация: 01.02.2013
Сообщений: 171
|
|||
| 21.02.2016, 22:43 [ТС] | |||
|
Вот почему выбор для подсчета создания экземпляров сразу у вас пал на статические переменные? Как определить что нужна статическая переменная или метод? Как это предугадать? Вы же не просто из воздуха придумали такой подход и решили счетчик делать через статику, у вас наверняка появились причины, хотябы взять Вот я так же хочу разбираться, как и вы. А для этого пытаюсь исчерпывающе и по максимуму понять смысл всех элементов в ООП.
0
|
|||
|
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
|
|
| 22.02.2016, 10:06 | |
|
0
|
|
|
306 / 101 / 18
Регистрация: 04.07.2014
Сообщений: 571
|
|||||||||||||||||||||||||||||||
| 22.02.2016, 11:27 | |||||||||||||||||||||||||||||||
Сообщение было отмечено skolm как решение
Решение
skolm
Статические переменные -- это один из способов создавать выражения со свободными переменными. Рассмотрим функцию суммы:
А теперь со свободной переменной:
free_summ уже невозможно, опираясь только на входные данные. Необходимо "замкнуть" $y на конкретное значение. Это можно сделать используя "глобальное окружение", тогда $y будет называться "глобальной переменной".
free_summ будет давать разный результат даже если вызвана с одним и тем же входным значением.
Замкнём нашу переменную $y в окружении объекта
Теперь в нашем распоряжении три окружения: окружение функции/метода -- значение определяет в момент вызова, окружение объекта -- значение определяется состоянием объекта и разделяется всем методами объекта, глобальное окружение -- значение определяется на самом верхнем уровне и разделяется всеми методами всех объектов всех классов. Для подавляющего большинства задач этих трёх окружений достаточно. Однако в некоторых случаях удобно иметь возможность создать такое окружение, которое определит значение некоторой свободной переменной для всех объектов конкретного класса. Такие переменные называют "статическими переменными класса" или "переменными уровня класса".
$z и увеличивать её на единичку. Но это отразится только на объектах класса ObscureAdder. Если мы создадим класс CorrectedAdder со своей статической переменной $z, то она никак не будет зависеть от значения $z в классе ObscureAdder, в отличие от глобальной переменной.
1
|
|||||||||||||||||||||||||||||||
|
Фрилансер
1871 / 1362 / 604
Регистрация: 12.01.2011
Сообщений: 5,470
|
||||||||||||
| 22.02.2016, 13:21 | ||||||||||||
0
|
||||||||||||
| 22.02.2016, 13:21 | |
|
Помогаю со студенческими работами здесь
18
статические методы и использование ими памяти
Используя статические объекты и статические методы, разработать программу движения по экрану прямой линии и квадрата. Статические свойства классов Статические методы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536
Одним из. . .
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|