Возможно ли в Java иметь класс, наследуемый от двух разных классов в зависимости от некоторой переменной?

1

У меня есть родительский класс в Android, который наследует от Activity, а все мои другие действия наследуются от этого родительского класса. Этот родитель делает некоторые вещи жизненного цикла в onPause и onResume, что все мои действия нуждаются. Проблема в том, что у меня есть активность карты, которая должна наследовать от Android MapActivity, но мне все еще нужна эта деятельность, чтобы мои жизненные циклы родительских классов. Есть ли способ наследовать MapActivity от двух родителей? Или, может быть, частичный класс, на который я не совсем уверен. Любые идеи были бы замечательными.

Спасибо,

Брайан

  • 1
    Кстати, что у вас есть CustomActivity1 и CustomActivity2 унаследовав от Activity и перекрывая onStart() метод, как вы думаете , onStart() метод класса наследует от обоих CustomActivity1 и CustomActivity2 должны делать?
Теги:
oop

4 ответа

2
Лучший ответ

Короткий ответ - нет. У вас не может быть класса, который наследует от двух классов в Java. Стандартной рекомендацией было бы использовать interface, но я не думаю, что это правильно для вас в этом случае.

Возможно, вы можете добиться повторного использования кода, который вы ищете, используя композицию, например, вместо наследования. Если вы разместите пример кода, я могу дать вам более конкретный ответ.

  • 0
    +1 за упоминание редизайна кода для использования композиции.
  • 0
    На основании ваших советов я переместил весь общий код в новый класс и просто вызывал функции статически из onResume и onPause в обеих Activity. Все работает нормально, просто немного рефакторинга.
0

Извините, но на Java вы можете расширить только один класс. Однако вы можете реализовать несколько интерфейсов. Вы можете иметь класс BaseMapActivity, расширяющий MapActivity, а затем ваш MainMapActivity расширяет BaseMapActivity. Самый простой способ - скопировать код из уже существующей базы Activity и поместить его в MainMapActivity.

0

Свое смешное, у меня была точно такая же проблема в начале этого дня (но с PreferenceActivity).

К сожалению, я не думаю, что это возможно, я закончил создание копии моего родительского класса и изменил имя и extends Activity на extends PreferenceActivity.

0

В Java вы можете распространяться только из одного класса, однако вы можете реализовать несколько классов из одного класса. Еще одна вещь, которую следует рассмотреть, - это объединение расширенных подклассов (это имитирует множественное наследование).

Более подробное описание можно найти здесь: http://www.javaworld.com/javaworld/jw-10-2005/jw-1024-multiple.html

Ещё вопросы

Сообщество Overcoder
Наверх
Меню