powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Использование переопределенных методов интерфейса в конструкторе.
7 сообщений из 7, страница 1 из 1
Использование переопределенных методов интерфейса в конструкторе.
    #38157573
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почитал здесь пример и простетировал.
А всегда ли это чревато..?

Например, я создал интерфейс:

Код: java
1.
2.
3.
4.
public interface CommonUI {
    public void createMainLayout();
    public void createMainMenuBar();
}



Далее создал другой класс,
имплементировал туда этот вышеуказанный интерфейс,
явно указал конструктор,
в конструктор вставил один или оба метода интерфейса.

IDE выдает предупреждение - Overridable method call in constructor.
Чем заменить если хочется использовать методы интерфейса при вызове класса?
...
Рейтинг: 0 / 0
Использование переопределенных методов интерфейса в конструкторе.
    #38157576
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nixic,
Это плохая практика в любом случае, НО если это не либа а ваш и только ваш код и вы имеете полный контроль над наследниками - то в принципе можно так делать, но обызательно задокументируйте. Еще лучший вариант вынести взовы переопределенных методов в метод init(), который должен вызываться после конструктора
...
Рейтинг: 0 / 0
Использование переопределенных методов интерфейса в конструкторе.
    #38157581
GKS_Samara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, Nixic!

> А всегда ли это чревато..?

Если метод или класс не final - то да.

> Например, я создал интерфейс:

Да он здесь не при чём.

> Чем заменить если хочется использовать методы интерфейса при вызове класса?

Грабли вот где:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
public class C1 {
  public C1() {
    m1();
  }
  public void m1() {
  }
}

public class C2 extends C1 {
  private final C1 parent;
  public C2() {
    parent = new C1();
  }
  public void m1() {
    parent.m1();
  }
}



И вот при создании C2 возникает вдруг NPE :)

Если хочется иметь вероятность грабли- используй. Но тебя предупреждают.

--
Алексей
JID: alxt@ya.ru
Posted
via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Использование переопределенных методов интерфейса в конструкторе.
    #38157590
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nixic,
если хочется использовать методы интерфейса при вызове класса?
надо перехотеть
...
Рейтинг: 0 / 0
Использование переопределенных методов интерфейса в конструкторе.
    #38157597
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nixic,

Ну, так доведи свой пример до ума:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
class MyPanelGui extends AbstractPanelGui implement CommonUI{
  private Parameter param;
  public MyPanelGui(Parameter param){
         this.param = param;
  }   
  public void createMainLayout(){
    if(param.equals(HORZIONTAL)){
           createHorizonalLayout();
    }
  }
}


Работать будет?
...
Рейтинг: 0 / 0
Использование переопределенных методов интерфейса в конструкторе.
    #38157601
vimba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NixicIDE выдает предупреждение - Overridable method call in constructor.
Чем заменить если хочется использовать методы интерфейса при вызове класса?
Не чем не нужно заменять, просто добавь модификатор final на имплементацию методов интерфейса, тогда наследник не сможет изменить их реализацию.
...
Рейтинг: 0 / 0
Использование переопределенных методов интерфейса в конструкторе.
    #38158496
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо большое, принял на вооружение :)
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Использование переопределенных методов интерфейса в конструкторе.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]