Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Иерархии обьектов


Автор: ShurikA 13.12.2005, 01:18
Преставим обьект obj1 внутри которого создаётся obj2.
Возможно ли, и как, из obj2 обратиться к функциям obj1?

Наверняка это элементарно но я с этим не сталкивался.

Автор: Шмель 13.12.2005, 05:42
Если я правильно понял вопрос, то так:
Код

public class Hier {
  
  private class Inner {
    public void someMethod() {
      // вызываем метод вешнего класса
      Hier.this.printString("some string");
    }
  }

  public void printString(String s) {
    System.out.println(s);
  }

}

Автор: batigoal 13.12.2005, 09:06
Шмель
Это вариант для случая внутреннего класса. Но я боюсь, что в общем случае это работать не будет.

Автор: maximb 13.12.2005, 10:42
Цитата(ShurikA @ 13.12.2005, 01:18)
Преставим обьект obj1 внутри которого создаётся obj2.
Возможно ли, и как, из obj2 обратиться к функциям obj1?


Передать ссылку на obj1 в объект obj2.
Например для obj2 определить конструктор

Код
public Obj2(Obj1 obj1)
{
            this.obj1 = obj1;
}

ну и создание obj2 из объекта obj1

Код
this.obj2 = new Obj2(this);


Может я не понял в чем сложность этой задачи. Но помойму все решается оч.просто.

Автор: Шмель 13.12.2005, 10:58
Цитата(Lamer @ 13.12.2005, 15:06)
Это вариант для случая внутреннего класса. Но я боюсь, что в общем случае это работать не будет.

Просто я не вижу никаких сложностей в других случаях. Не похоже, чтобы человек, пишущий на java ни разу не сталкивался со случаями, описанными maximb. Хм... ну да ладно...

Автор: maximb 13.12.2005, 11:18
Цитата(ShurikA @ 13.12.2005, 01:18)
Преставим обьект obj1 внутри которого создаётся obj2.
Возможно ли, и как, из obj2 обратиться к функциям obj1?


Здесь не понятно в чем может быть сложность. Про иннер классы тоже ничего не сказано.

Может быть вызов приватных методов obj1 ?
Но это тоже решаемая проблема.

Автор: chief39 13.12.2005, 11:31
Цитата(Lamer @ 13.12.2005, 09:06)
Это вариант для случая внутреннего класса. Но я боюсь, что в общем случае это работать не будет.

В конструктор Obj2 всегда передаём объект класса Obj1. Обычный конструктор, могли бы и стринг передавать - не всё ли равно smile
А при таком создании ещё и гарантируется что именно тот тип передаём smile

P.S. АГА! СПАЛИЛИ!!! РАЗ НЕ ВЫСПАЛСЯ - ЗНАЧИТ ГЛУПОСТЯМИ ЗАНИМАЛСЯ ВСЮ НОЧЬ! smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)