it_vse (519823), страница 52

Файл №519823 it_vse (Лекции) 52 страницаit_vse (519823) страница 522013-09-12СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 52)

Таким образом, команда Massiv [ 3 ] [ 3 ] = 4;присваивает значение элементу массива, находящемся в 4-ой строке и 4-ом столбце.Объявление массива с заданием первоначальных значений:Синтаксис: модификатор_доступа тип_данных имя_массива [ ] = {значение1, значение2, значениеN};Пример:int Massiv [ ] = {123,17,29,15 };// одномерный массив Ляхевич А.Г., 2000 - 2002 годpublic long Massiv [ ] [ ] = { {123,17,29,15 }, {17, 12, 3} }; // двумерный массивОбъявление массива, с последующим его созданием:Синтаксис: модификатор_доступа тип_данных имя_массива [ ];имя_массива = new тип_данных [ число_элементов ];Пример:private int Massiv [ ];// одномерный массивMassiv = new int [ 4 ];long Massiv [ ] [ ];// двумерный массивMassiv = new long [ 4 ] [ 3 ];Объявление массива, одновременно с его созданием:Синтаксис: модификатор_доступа тип_данных имя_массива [ ] = new тип_данных [ число_элементов ];Пример:int Massiv [ ] = new int [ 4 ];// одномерный массивprivate protected long Massiv [ ] [ ] = new long [ 4 ] [ 3 ];// двумерный массив8.3.

Методы класса, методы доступа в классах, конструкторы и деструкторы класса.Объявление методаСинтаксис:модификатор_доступа спецификаторы тип_возвращаемого_значения имя__метода (параметры) throwsсписок_исключений_которые_вызывает_класс{ /* операторы */return возращаемое_значение ; }Пример:1) public static long Metod (int x, byte y) throws IOException { /*операторы*/ return 5; }2) void Metod ( ) { /*операторы*/ return; /*операторы*/}* Во втором примере тип_возвращаемого_значения = void. Тип void – это "пустой" тип, что означает, чтометод не возвращает значений. При указании типа void, ключевое слово return указывается без параметров(или вообще не используется) и просто означает преждевременный выход из метода.Модификаторы доступа методов (нет, public, protected, private) – см. модификаторы доступа свойств.Спецификаторы методов:ЗначениеОписаниеstaticЗадает статический метод.

Подробнее объяснения см. в спецификаторе static для свойств.abstractАбстрактные методы просто объявляются, но не реализуются в данном классе. Тело методадолжно быть описано в подклассах текущего класса. Ни static-методы, ни конструкторыклассов не могут объявляться как abstract. Более того, абстрактные методы нельзя определятькак final, поскольку в этом случае их нельзя будет переопределить.finalЛюбые подклассы текущего класса не смогут переопределить данный метод (о переопределении методов см.

ниже). Эта возможность увеличивает защищенность ваших классов игарантирует, что операции, определенные в данном методе, никак нельзя будет изменить.nativeМетоды, написанные не на языке Java, а на других языках программирования. Обычно такиеметоды пишутся на C++ для ускорения работы критических участков программы. Дляопределения этих методов нужно поместить спецификатор native в начале объявления методаи вместо тела метода поставить точку с запятой.

Пример: native void toggleStatus();synchronized Позволяет защитить данные, которые могут быть разрушены в том случае, если два метода,из разных потоков, пытаются одновременно обратиться к одним и тем же данным. Syncronized-метод не может начать работать со свойствами, пока их не освободит другой метод.Методы доступа в классах.Свойства класса можно создавать, описывая на уровне класса, public - переменные. Однако, болееоптимальное решение – это описать на уровне модуля private-переменную, а для чтения или записи еезначения использовать public-методы, называемые методами доступа.

Метод доступа позволяет, передзаписью нового значения свойства, выполнить определенные действия: проверить значение свойства накорректность, автоматически пересчитать значения связанных свойств и т.д. Пример:class Krug {private int radius;public void setRadius (int new_radius) {if (new_radius>0) {radius=new_radius;} else { System.out.println ("Некорректное значение радиуса"); }}public int getRadius ( ) { return ( radius ); } Ляхевич А.Г., 2000 - 2002 год}Конструкторы класса, перегрузка методов.Конструкторы класса – это специальные методы, которые вызываются при создании экземпляров классов.Обычно в этих методах содержатся операторы, которые позволяют проинициализировать значения свойствобъекта при его создании.

Для инициализации собственных свойств объекта используется ключевое словоthis (этот объект). Синтаксис: this.свойство = значение;Можно определять несколько конструкторов с различными наборами параметров. Тогда, присоздании экземпляра класса, будет возможность создавать объект, передавая ему различные наборыпараметров (перегружая конструкторы). При этом будет вызываться тот конструктор, у которого именнотакой набор параметров, который был указан при создании объекта. Перегружать можно не толькоконструкторы, но и любые методы класса.Имя конструктора должно совпадать с именем класса. Для конструктора не указывается типвозвращаемых им значений, т.к.

конструктор не может возвращать каких либо значений. Модификатордоступа конструктора всегда должен быть public. Конструкторы нельзя объявлять, как native, absract, static,synchronized или final. Пример:class Game {boolean vse_svoi; // Описание свойства "все свои"public Game (String Name) {this.vse_svoi=true; } /* инициализация свойства при создании объекта */public Game (int Chislo_igrokov) { this.vse_svoi=false; } /* инициализация свойства при создании объекта */public Game (String Name, int Chislo_igrokov) {/* операторы, выполняются при создании объекта */ }}Деструкторы класса (метод finalize)Метод finalize присутствует во всех объектах Java (он порожден от объекта java.lang.Object, от которогопорождены все объекты Java).

Этот метод выполняется непосредственно перед "сборкой мусора", т.е. передтем, как объект будет уничтожен. Пример:class Game {protected void finalize ( ) { System.out.println ("Игра окончена"); }}8.4. Создание экземпляра классаОписание класса – это просто описание свойств и методов объекта. При создании же экземпляра объекта(ключевое слово new), объект создается реально: анализируется описание класса, выделяется необходимаяпамять под объект, объект получает собственные копии всех не static свойств и методов класса и, в зависимости от переданных создаваемому классу параметров, срабатывает тот или иной конструктор класса,который выполняет заданные программистом операции по инициализации свойств объекта. Можно создавать несколько экземпляров одного класса.

При создании экземпляра класса, в используемые переменныепомещается указатель на созданный объект (см. переменные domino и shashki в примере ниже). На один итот же объект может существовать несколько указателей (см. переменную domino2 в примере ниже).Объект существует до тех пор, пока на него есть хотя бы одна ссылка, иначе он автоматически уничтожается Java ("сборка мусора").Синтаксис создания экземпляра класса следующий:Вариант 1 (предварительное описание, с последующим созданием):имя_описанного_класса имя_переменной;имя_переменной = new имя_описанного_класса (параметры_для_конструктора);Вариант 2 (создание в момент описания):имя_описанного_класса имя_переменной = new имя_описанного_класса (параметры_для_конструктора);Пример (предполагается, что класс Game описан раньше (см. выше) ):public Class dvor {Game domino, domino2;// Описание переменных на уровне классаpublic dvor ( ) {//Конструктор класса dvordomino = new Game ("Домино", 6);/* Создается игра "домино" на 6 человек, срабатываетсоответствующий конструктор класса */Game shashki = new Game ("Шашки"); /* Создается игра "шашки", число участников и так известно.Т.к.

список параметров другой, срабатывает конструктор, укоторого перечень параметров именно такой */domino2 = domino; /* За спинами доминошников появляются "болельщики", которые также лезут вигру – переменная domino2 указывает на тот же объект, что и domino.*/shashki = domino; /* В шашки играть бросают, и присоединяются к "болельщикам" доминошников:на объект "домино" уже 3 указателя: domino, domino2 и shashki, а объект"шашки" будет уничтожен при ближайшей "сборке мусора", т.к.

на него нетни одного указателя */} Ляхевич А.Г., 2000 - 2002 годpublic static void main(String args[ ] ) {// Выполнение программы всегда начинается с метода maindvor go = new dvor ( ); // Вызов конструктора dvor, который и выполнит основную часть программыSystem.gc ( ); // Принудительная "сборка мусора" ( gc = Garbage Collection )}}Приведенная выше программа начнет выполняться с метода main (как и любая исполняемая программа наJava), который вызовет создание экземпляра класса dvor. При создании экземпляра класса, будет вызванконструктор dvor ( ), который и выполнит основную часть программы.

Такой прием применен из-за того,что метод main – статический, а из статического метода нельзя вызывать не статические методы и свойствадругих объектов (например, создавать объекты domino и shashki).8.5. Наследование, переопределение методовМощной возможностью Java, как и любого объектно-ориентированного языка, является наследование. Принаследовании, порожденный класс получает свойства и методы того класса, от которого он был порожден, иих не надо переписывать заново.

Кроме того, он может дополнительно определить свои собственныесвойства и методы, а также переопределить унаследованные методы (т.е. реализовать те же методы, но посвоему). Наследование задается при помощи ключевого слова extends в описании класса (синтаксис см.раньше). Переопределение унаследованных методов реализуется путем описания в порожденном классеметода с таким же именем, что и унаследованный метод. После того, как метод переопределен, доступ кпервоначальному варианту возможен с использованием специальной переменной super ( доступ:super.метод_родителя или super.свойство_родителя ), которая указывает на класс, от которого был порожденданный.

Ниже приведен пример, в котором от класса avtomobil порождается класс mercedes, в которомпереопределен метод poehal и создан новый метод marka. Причем метод poehal переопределен так, чтосначала вызывается старый вариант метода (super.poehal ( ) ), а затем добавляются новые команды. Крометого, предусмотрена возможность перегрузки метода, т.е.

вызова одного и того же метода, с различнымивариантами параметров. Пример:class avtomobil {long probeg;// Задаем свойство "пробег"void poehal ( ) { System.out.println (" Еду "); } // Задаем метод "поехал" }class mercedes extends avtomobil {// Объект mercedes порожден от avtomobil/* Свойство probeg определять не надо, т.к. оно унаследовано. Метод poehal также не надо было быопределять, но мы хотим заменить реализацию этого метод на свою, т.е.

переопределить метод.Кроме того, мы создаем возможность перегружать метод poehal, описывая различные реализации этогометода для различных наборов параметров */void poehal ( ) {super.poehal( );System.out.println (" Еду быстро …"); }void poehal ( String kuda ) {super.poehal( );System.out.println (" Еду "+kuda); }void marka ( ) { System.out.println (" Шестисотый мерс!"); } //Задаем новый метод marka}public class proga {public proga( ) {mercedes myCar = new mercedes ( );myCar.marka ( ); myCar.poehal( ); myCar.poehal( " в клуб"); }public static void main(String args[ ] ) { proga go = new proga (); }}8.6. Создание иерархии объектов.Необходимо отличать наследование, от создания иерархии объектов. Принаследовании, порожденный класс получает набор свойств и методов откласса, от которого происходит наследование.

Характеристики

Тип файла
PDF-файл
Размер
6 Mb
Материал
Тип материала
Высшее учебное заведение

Список файлов лекций

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