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
   34   35   36   37   38   39   40   41   42   43   44