2012-06-19 3 views
1

У меня эта проблема, так как я начинаю программировать ООП. Я хочу закрыть один класс из другого класса, который был вызван этим классом, который я хочу закрыть.Как закрыть один экземпляр с другим классом в java

EX:

Класс меню Основной класс вызова и в меню я закрыть главный

//Im inside of Principal 

Menu mnu = new Menu(); 

//Now im inside of Menu 

public void closePrincipal(){ 

principal.close(); 
} 
+2

Без дополнительного контекста трудно понять, что вы делаете. –

ответ

4

Вы можете передать ссылку на основной класс в меню;

// в вашей основной

Menu mnu = new Menu(this); 

Вы должны определить, что конструктор в классе Menu:

class Menu{ 
    private Principal principal; 

    public Menu(Principal principal){ 
     this.principal = principal; 
    } 
... 
} 

Итак, когда вы хотите использовать его в меню, просто сделать это.

principal.close(); 
+0

Зачем нужно, чтобы меню в первую очередь отвечало за закрытие ресурсов на вызывающем абоненте? Это разрушает инкапсуляцию и увеличивает сцепление. – jspboix

+0

Спасибо: E очень полезно – gmlyra

0

Когда вы говорите, «Im внутри кода класса Principal», вы можете думать, как «У меня есть сделать переменную, основанную на принципе класса, и я уверен, выполнение какой-то код для этой переменной».

Вы превратили определение («класс») в конкретный объект.

0

Создание меню и передать главную

Menu mnu = new Menu(this); 

В меню:

private Principal principal; 

public Menu(Principal principal) { 
    this.principal = principal; 
} 

//You can close the menu's principal any time by calling this... 
public void closePrincipal() { 
    principal.close(); 
} 

Вы можете закрыть принципала таким образом

mnu.closePrincipal() 

или закрыть его в конструкторе меню, то ,

Смежные вопросы