Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Unix.docx
Скачиваний:
3
Добавлен:
01.03.2025
Размер:
1.91 Mб
Скачать

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

Позволяет защитить данные, которые могут быть разрушены в том случае, если два метода, из разных потоков, пытаются одновременно обратиться к одним и тем же данным. Syncro-nized-метод не может начать работать со свойствами, пока их не освободит другой метод.

Методы доступа в классах.

Свойства класса можно создавать, описывая на уровне класса, public - переменные. Однако, более оптимальное решение - это описать на уровне модуля private-переменную, а для чтения или записи ее значения использовать public-методы, называемые методами доступа. Метод доступа позволяет, перед записью нового значения свойства, выполнить определенные действия: проверить значение свойства на корректность, автоматически пересчитать значения связанных свойств и т. д. Пример: class Krug { private int radius;

public void setRadius (int newradius) {

if (new_radius>0) {radius=new_radius;} else { System.out.println ("Некорректное значение радиуса"); } }

public int getRadius ( ) { return ( radius ); }

Конструкторы класса, перегрузка методов.

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

Можно определять несколько конструкторов с различными наборами параметров. Тогда, при создании экземпляра класса, будет возможность создавать объект, передавая ему различные наборы параметров (перегружая конструкторы). При этом будет вызываться тот конструктор, у которого именно такой набор параметров, который был указан при создании объекта. Перегружать можно не только конструкторы, но и любые методы класса.

Имя конструктора должно совпадать с именем класса. Для конструктора не указывается тип возвращаемых им значений, т. к. конструктор не может возвращать каких либо значений. Модификатор доступа конструктора всегда должен быть public. Конструкторы нельзя объявлять, как native, absract, static, synchronized или final. Пример: class Game {

boolean vse_svoi; // Описание свойства "все свои"

public Game (String Name) {this.vse_svoi=true; } /* инициализация свойства при создании объекта */ public Game (int Chisloigrokov) { this.vse_svoi=false; } /* инициализация свойства при создании объекта */ public Game (String Name, int Chisloigrokov) {/* операторы, выполняются при создании объекта */ } }

Деструкторы класса (метод finalize)

Метод finalize присутствует во всех объектах Java (он порожден от объекта java.lang.Object, от которого порождены все объекты Java). Этот метод выполняется непосредственно перед "сборкой мусора", т.е. перед тем, как объект будет уничтожен. Пример:

class Game { protected void finalize ( ) { System.out.println ("Игра окончена"); } }

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]