Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Указание подкласса в методе базового класса, Возможно ли это? 
V
    Опции темы
$tatic
Дата 16.4.2007, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 651
Регистрация: 28.1.2005

Репутация: нет
Всего: 22



Пишу классы по работе с векторной алгеброй. Есть базовый абстрактный класс (пока назвал его Vector, не относится к java.util.Vector). От него будут наследоваться классы Vector2D, Vector3D и т.д. Можно ли описать в базовом классе Vector алгебраические методы (например add, sub) так, чтобы тип аргумента всегда соответствовал типу подкласса. Например у класса Vector3D будет метод public void add(Vector3D v). Естественно, что можно описать их все в дочерних классах, но можно ли его описать один раз в базовом классе так, чтобы он имел параметр с типом наследника. Мне конкретный функционал его не нужен, хватит и базового (для сложения достаточно по очереди перебрать все элементы обоих векторов, но если просто объявить параметр как Vector, то можно будет, например сложить трехмерный вектор с двухмерным, а это нехорошо).
Надеюсь, объяснил понятно. smile
PM MAIL   Вверх
w1nd
Дата 16.4.2007, 19:42 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

Репутация: 20
Всего: 54



Базовый класс:

Код
public class Base<Self extends Base> {
        
    public void operation(Self param) {
        ...
    }
        
}


Наследник:

Код
public class Derived extends Base<Derived> {

    @Override        
    public void operation(Derived param) {
        ...
    }
        
}


Такой "выверт" используется, например, в Enum'ах.

Это сообщение отредактировал(а) w1nd - 16.4.2007, 19:42


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
$tatic
Дата 16.4.2007, 21:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 651
Регистрация: 28.1.2005

Репутация: нет
Всего: 22



Спасибо, этот "выверт" как раз тут подходит. И даже не нужно методы переопределятьsmile

Цитата(w1nd @  16.4.2007,  20:42 Найти цитируемый пост)
используется, например, в Enum'ах

А для чего он там?
PM MAIL   Вверх
w1nd
Дата 17.4.2007, 00:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

Репутация: 20
Всего: 54



Цитата($tatic @  16.4.2007,  21:49 Найти цитируемый пост)
А для чего он там?

Ровно для того же, что нужно вам smile

Это сообщение отредактировал(а) w1nd - 17.4.2007, 00:58


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0897 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.