Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОТВЕТЫ МИР.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
546.82 Кб
Скачать

28 Использование объектов в качестве параметров.

В метода в качестве параметров могут передаваться и объекты.

Пример:

class Test{

int a, b;

Test(int i, int j){

a = i; b = j}

boolean equals(Test ob){

if (ob.a == a&&ob.b==b) return true;

else return false;}

}

class Test1{

public static … {

Test ob1 = new Test(1,2);

ob2 = new Test(1,2);

ob3 = new Test(1,3);

ob1.equals(ob2);

ob2.equals(ob3);

}}

Описанный метода equals в классе Test сравнивает объект, в котором он был вызван, с объектом, переданным в качестве параметра. Использование объектов в качестве параметров полезно в случае когда необходимо создать объект – точную копию уже существующего. Для этого можно написать конструктор, принимающий в качестве параметра объект собственного класса.

Существует два способа передачи аргумента подпрограмме:

  1. Передача по значению копируется в формальный параметр подпрограммы значения аргумента, т.е. все изменения с параметром подпрограммы не влияют на аргумент используемый при вызове.

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

В java используются оба эти способа. Аргументы простого типа передаются по значению, все остальные по ссылкам.

29 Использование ключевого слова this

Иногда в методе необходимо сослаться на вызвавший его объект. В java есть оператор this который можно использовать в любом методе для ссылки на текущий объект, иначе он всегда содержит ссылку на объект для которого метод вызван в данный момент. В java нельзя объявить две одноименные локальные переменные с одними и теми же вложенными об-и действия. Т.к. данный оператор позволяет ссылаться непосредствен на объект, его можно исопльзовать для разрешения всех конфликтов имен, которые могли бы возникнуть между переменными.

class Box {

double Width, Height, Depth;

Box(double Width, double Height, double Depth){

this.width = Width;

}

}

30 Механизм финализации в Java. Сбор мусора.

Объём памяти выделяется динамически с помощью оператора new, поэтому возникает необходимость уничтожать объекты, которые более не используются и освобождать память.

В Java освобождение памяти происходит автоматически – это называется сбором мусора. Если на объект нет ссылок, то он считается ненужным и его можно удалить.

Но бывают случаи, когда при уничтожении объекта необходимо выполнить ряд действий. Для обработки таких ситуаций в Java разработан специальный механизм, который называется финализацией. В классе можно описать метод finalize(), который будет автоматически вызываться перед удалением объекта данного класса. Он не возвращает никакого значения и имеет спецификатор доступа protected. Это предотвращает доступ к данному методу всем подпрограммам, определённым за пределами данного класса.

  1. public означает, что к данному члену класса можно обращаться в любом месте программы.

  2. private означает, что член класса доступен только членам этого класса.

  3. protected указывает, что член класса доступен внутри любого подкласса данного класса.

Если доступ не указан явно, это означает, что он находится между public и protected