Главная » Все файлы » Просмотр файлов из архивов » PDF-файлы » К. Арнольд, Д. Гослинг - Язык программирования Java

К. Арнольд, Д. Гослинг - Язык программирования Java, страница 4

PDF-файл К. Арнольд, Д. Гослинг - Язык программирования Java, страница 4 Языки программирования (53641): Книга - 7 семестрК. Арнольд, Д. Гослинг - Язык программирования Java: Языки программирования - PDF, страница 4 (53641) - СтудИзба2019-09-19СтудИзба

Описание файла

PDF-файл из архива "К. Арнольд, Д. Гослинг - Язык программирования Java", который расположен в категории "". Всё это находится в предмете "языки программирования" из 7 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Просмотр PDF-файла онлайн

Текст 4 страницы из PDF

В книге мы будем различать эти два понятия лишь там, где необходимо, но чаще всего термины“объект” и “ссылка на объект” будут употребляться как эквивалентные.Возвращаясь к определенному выше классу Point, давайте предположим, что мы разрабатываем графическое приложение, в которомприходится следить за множеством точек.

Каждая точка представляется отдельным объектом Point. Вот как может выглядеть создание иинициализация объектов Point:Point lowerLeft = new Point();Point upperRight = new Point();Point middlePoint = new Point();lowerLeft.x = 0.0;lowerLeft.y = 0.0;upperRight.x = 1280.0;upperRight.y = 1024.0;middlePoint.x = 640.0;middlePoint.y = 512.0;Каждый объект класса Point обладает собственной копией полей x и y. Например, изменение поля x объекта lowerLeft никак не влияет назначение x объекта upperRight.

Поля объектов иногда называют переменными экземпляра (instance variables), поскольку в каждом объекте(экземпляре) класса содержится отдельная копия этих полей.1.6.2. Статические поляЧаще всего бывает нужно, чтобы значение поля одного объекта отличалось от значений одноименных полей во всех остальных объектах того жекласса.Тем не менее иногда возникает необходимость совместного использования поля всеми объектами класса. Такие совместные поля такженазываются переменными класса — то есть переменными, относящимися ко всему классу, в отличие от переменных, относящихся к егоотдельным объектам.Для чего нужны переменные класса? Давайте представим себе фабрику, производящую плееры Sony (Sony Walkman).

Каждому плееруприсваивается уникальный серийный номер. В наших терминах это означает, что в каждом объекте имеется уникальное поле, в которомхранится значение номера. Однако фабрика должна знать значение номера, который должен быть присвоен следующему плееру. Дублироватьэту информацию в каждом объекте-плеере было бы неразумно — нужна всего одна копия номера, которая хранится на самой фабрике, другимисловами — в переменной класса.Чтобы использовать поле для хранения информации, относящейся ко всему классу, следует объявить его с ключевым словом static, поэтомутакие поля иногда называют статическими. Например, объект Point, представляющий начало координат, может встречаться достаточно часто,поэтому имеет смысл выделить ему отдельное статическое поле в классе Point:public static Point origin = new Point();Если это объявление встретится внутри объявления класса Point, то появится ровно один экземпляр данных с именем Point.origin, которыйвсегда будет ссылаться на объект (0,0).

Поле static будет присутствовать всегда, независимо от того, сколько существует объектов Point (дажеесли не было создано ни одного объекта). Значения x и y равны нулю, потому что числовые поля, которым не было присвоено начальногозначения, по умолчанию инициализируются нулями.Мы уже встречались со статическим объектом в нашей первой программе. Класс System — стандартный класс Java, в котором имеетсястатическое поле с именем out, предназначенное для направления вывода программы в стандартный выходной поток.Когда в этой книге встречается термин “поле”, обычно имеется в виду поле, уникальное для каждого объекта, хотя в отдельных случаях длябольшей ясности может использоваться термин “нестатическое поле”.1.6.3. Сборщик мусораПредположим, вы создали объект с помощью вызова new; но как избавиться от этого объекта, когда он окажется ненужным? Ответ простой —никак.

Неиспользуемые объекты Java автоматически уничтожаются сборщиком мусора. Сборщик мусора работает в фоновом режиме и следит зассылками на объекты. Когда ссылок на объект больше не остается, появляется возможность убрать его из кучи, где он временно хранился, хотясамо удаление может быть отложено до более подходящего момента.1.7. Методы и параметрыОбъекты определенного выше класса Point могут быть изменены в любом фрагменте программы, в котором имеется ссылка на объект Point,поскольку поля этого класса объявлены с ключевым словом public.

Класс Point представляет собой простейший пример класса. На самом делеиногда можно обойтись и простыми классами — например, при выполнении чисто внутренних задач пакета или когда для ваших целей хватаетпростейших типов данных.Тем не менее настоящие преимущества объектно-ориентированного программирования проявляются в возможности спрятать реализациюкласса. В языке Java операции над классом осуществляются с помощью методов класса — инструкций, которые выполняются над даннымиобъекта, чтобы получить нужный результат.

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

Метод может возвращать значение или объявляться с ключевым словом void, котороеозначает, что метод ничего не возвращает. Операторы метода содержатся в блоке между фигурными скобками { и }, которые следуют за именемметода и объявлением его сигнатуры. Сигнатурой называется имя метода, сопровождаемое числом и типом его параметров. Можноусовершенствовать класс Point и добавить в него простой метод clear, который выглядит так:public void clear() {x = 0;y = 0;}Метод clear не имеет параметров, поскольку в скобках ( и ) после его имени ничего нет; кроме того, этот метод объявляется с ключевым словомvoid, поскольку он не возвращает никакого значения.

Внутри метода разрешается прямое именование полей и методов класса — можно простонаписать x и y, без ссылки на конкретный объект.1.7.1. Вызов методаОбъекты обычно не работают непосредственно с данными других объектов, хотя, как мы видели на примере класса Point, класс может сделатьсвои поля общедоступными. И все же в хорошо спроектированном классе данные обычно скрываются, чтобы они могли изменяться толькометодами этого класса.

Чтобы вызвать метод, необходимо указать имя объекта и имя метода и разделить их точкой (.). Параметры передаютсяметоду в виде заключенного в скобки списка значений, разделяемых запятыми. Даже если метод вызывается без параметров, все равнонеобходимо указать пустые скобки. Объект, для которого вызывается метод (объект, получающий запрос на вызов метода) носит названиеобъекта-получателя, или просто получателя.В качестве результата работы метода может возвращаться только одно значение. Чтобы метод возвращал несколько значений, следует создатьспециальный объект, единственное назначение которого — хранение возвращаемых значений, и вернуть этот объект.Ниже приводится метод с именем distance, который входит в класс Point, использованный в предыдущих примерах. Метод distance принимает вкачестве параметра еще один объект Point, вычисляет евклидово расстояние между двумя точками и возвращает результат в видевещественного значения с двойной точностью:public double distance(Point that) {double xdiff, ydiff;xdiff = x — that.x;ydiff = y — that.y;return Math.sqrt(xdiff * xdiff + ydiff * ydiff);}Для объектов lowerLeft и upperRight, которые были определены в разделе, посвященном созданию экземпляров объектов, вызов метода distanceможет выглядеть так:double d = lowerLeft.distance(upperRight);После выполнения этого оператора переменная d будет содержать евклидово расстояние между точками lowerLeft и upperRight.1.7.2.

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

Следующее определениеclear эквивалентно приведенному выше:public void clear() {this.x = 0;this.y = 0;}Ссылка this часто используется в качестве параметра для тех методов, которым нужна ссылка на объект. Кроме того, this также можетприменяться для именования членов текущего объекта. Вот еще один из методов Point, который называется move и служит для присвоенияполям x и y определенных значений:public void move(double x, double y) {this.x = x;this.y = y;}В методе move ссылка this помогает разобраться, о каких x и y идет речь. Присвоить аргументам move имена x и y вполне разумно, поскольку вэтих параметрах методу передаются координаты x и y точки. Но тогда получается, что имена параметров совпадают с именами полей Point, иимена параметров скрывают имена полей.

Если бы мы просто написали x = x, то значение параметра x было бы присвоено самому параметру, ане полю x, как мы хотели. Выражение this.x определяет поле x объекта, а не параметр x метода move.1.7.3. Статические методыМы уже знаем, что в классе могут присутствовать статические поля, относящиеся к классу в целом, а не к его конкретным экземплярам. Поаналогии с ними могут существовать и статические методы, также относящиеся ко всему классу, которые часто называют методами класса.Статические методы обычно предназначаются для выполнения операций, специфичных для данного класса, и работают со статическими полями,а не с конкретными экземплярами класса.

Методы класса объявляются с ключевым словом static и называются статическими методами.Когда в этой книге встречается термин “метод”, он (как и термин “поле”) означает метод, специфичный для каждого объекта, хотя в отдельныхслучаях, для большей ясности, может использоваться термин “нестатический метод”.Для чего нужны статические методы? Давайте вернемся к примеру с фабрикой, производящей плееры. Следующий серийный номер для новогоизделия должен храниться на фабрике, а не в каждом объекте-плеере. Соответственно и метод, который работает с этим номером, должен бытьстатическим, а не методом, работающим с конкретными объектами-плеерами.В реализации метода distance из предыдущего примера использован статический метод Math.sqrt для вычисления квадратного корня.

Класс Mathсодержит множество методов для часто встречающихся математических операций. Эти методы объявлены статическими, так как они работаютне с каким-то определенным объектом, но составляют внутри класса группу со сходными функциями.Статический метод не может напрямую обращаться к нестатическим членам. При вызове статического метода не существует ссылки наконкретный объект, для которого вызывается данный метод. Впрочем, это ограничение можно обойти, передавая ссылку на конкретный объектв качестве параметра статического метода. Тем не менее в общем случае статические методы выполняют свои функции на уровне всего класса, анестатические методы работают с конкретными объектами.

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5209
Авторов
на СтудИзбе
430
Средний доход
с одного платного файла
Обучение Подробнее