Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.12.2013, 17:28   #1
Tison1251
 
Регистрация: 01.12.2013
Сообщений: 4
По умолчанию Интерфейсы.

Есть класс допустим А, есть два интерфейса допустим B, C. Класс A реализует их. В классе А, есть два коструктора
A(Integer a){}
A(Integer a, Integer b){}
Можно ли сделать так, что бы при создании объекта класса А при создании через интерфейс B был доступен только первый конструктор, а при С только второй.
B b = new A(2); // можно
B b = new A(2,3); // нельзя
И наоборот с С. Кто знает напишите пожалуйста. Спасибо.
Tison1251 вне форума Ответить с цитированием
Старый 01.12.2013, 22:53   #2
Tison1251
 
Регистрация: 01.12.2013
Сообщений: 4
По умолчанию

Если это нереально и я сказал фигню, то напишите пожалуйста ... Спасибо.
Tison1251 вне форума Ответить с цитированием
Старый 02.12.2013, 20:05   #3
BleStaR
Форумчанин
 
Регистрация: 25.09.2009
Сообщений: 234
По умолчанию

Класс реализующий два и более интерфейсов не может представлять один из них без другого...
Например, наушники с микрофоном... это в любом случае (какой конструктор не используй) будут наушники с микрофоном и не иначе. Вот только мы знаем, что они умеют все что должны уметь наушники и все что должен уметь микрофон. И соответственно в рамках конкретной задачи будем использовать лишь необходимый нам функционал.

В твоем случае, у класса А предположим существование как мин. двух полей a, b. Конструкторы их инициализируют... не зависимо от конструктора поля все равно будут. Просто они могут быть не инициализированы.

Ответ на твой вопрос: Логически так нельзя делать (да как бы и необходимости в этом не вижу - может пример приведешь?). А практически тебя ни кто не запрещает использовать что нить вроде
Код:
private A(){};
public static B getInstance(Integer a){};
public staitc C getInstance(Integer a, Integer b){};
BleStaR вне форума Ответить с цитированием
Старый 07.12.2013, 04:52   #4
Tison1251
 
Регистрация: 01.12.2013
Сообщений: 4
По умолчанию

Спасибо. Интерестно насчет методов. Мне кажется стоит потянуться в сторону паттернов. Ибо код не совсем грамотно спроектирован в практической части это выглядит как класс Matrix. Два интерфейса SquareMatrix, SimpleMatrix. Соответственно есть методы только для простых и только для квадратных. Ну можно было бы и без квадратных только проверок больше. Так вот один конструктор для простых с двумя интами а второй для квадратных с одним. Еще раз спасибо !)
Tison1251 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Интерфейсы Amgsys HQ Общие вопросы Delphi 2 14.08.2013 23:45
xml интерфейсы Meunikum PHP 0 26.01.2013 11:45
COM-интерфейсы MS Word mitryz Общие вопросы C/C++ 0 04.11.2009 11:18
Интерфейсы Maks1978 Общие вопросы C/C++ 0 29.06.2009 22:11
Интерфейсы MaZaHaKa Общие вопросы Delphi 1 30.11.2008 19:17