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

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

Спасибо,

Брайан

Ответ 1

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

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

Ответ 2

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

Ответ 3

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

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

Ответ 4

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

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