Page 39 - 6253
P. 39
Метод може повертати не тільки прості типи даних, але і значення, описані як
клас. Розглянемо програму:
// Повернення об’єкта з методу
class Test {
int a;
Test(int i){ a=i;}
// Цей метод повертає об’єкт типу Test, в якому а збільшене на 10
Test incrByten() {
Test temp = new Test(a+10);
return temp;
}
}
class RetObj {
public static void main (String args[]) {
Test obj1 = new Test(2), obj2;
obj2 = obj1.incrByten();
obj2 = obj2.incrByten( );
System.out.println(“obj1.a = ” + obj1.a);
System.out.println (“obj2.a = ” + obj2.a);
System.out.println (“obj2.a = “ + obj2.a);
}
}
Результатом виконання цієї програми будуть значення:
оbj1.а = 2
obj2.a = 12
оbj2.а = 22.
Отже об’єкт оbj2 створюється не викликом безпосередньо конструктора
класу, а методу incrByten(), який повертає об’єкт. Хоча оператор new виокремив
пам’ять у методі, який закінчив свою роботу, об’єкт буде існувати до того часу, доки
в програмі буде хоча б одне посилання на нього.
38