Как написать полиморфную функцию, расширяя абстрактный класс, который реализует общую функцию интерфейса?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как написать полиморфную функцию, расширяя абстрактный класс, который реализует общую функцию интерфейса?

Сообщение Anonymous »

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

Код: Выделить всё

public interface IObservable { /* also used version IObservable */
 void registerObserver(O o);
 void removeObserver(O o);
}
Я написал абстрактный класс VasembleBase :

Код: Выделить всё

public abstract class ObservableBase implements IObservable {
protected abstract  Set getCollection(O o);

@Override
public  void registerObserver(O o) {
getCollection(o).add(o);
}

@Override
public  void removeObserver(O o) {
getCollection(o).remove(o);
}
}
И я хочу, чтобы мой конкретный класс реализовал iobservable для различных типов наблюдателей:

Код: Выделить всё

// This is what it'd look like if I just implemented it by hand for generic interface
public ConcreteClass implements IObservable, IObservable {
@Override
public void registerObserver(Observer1 o) {}

@Override
public void registerObserver(Observer2 o) {}

@Override
public void removeObserver(Observer1 o) {}

@Override
public void removeObserver(Observer2 o) {}
}
Моя идея состоит в том, чтобы поместить функциональность регистра/удалить функциональность в базовый абстрактный класс и предоставить только сбор для этой операции. Но я не могу обернуть руку вокруг этого. Если я объявляю в ConceteClass Специальный тип для GetCollection , компилятор жалуется " Метод не переопределяет метод из его Superclass ".

Код: Выделить всё

public ConcreteClass extends ObservableBase {
protected Set getCollection(Observer1 o) {/*...*/}

protected Set getCollection(Observer2 o) {/*...*/}
}
Это возможно?


Подробнее здесь: https://stackoverflow.com/questions/797 ... ments-an-i
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»