Возможно ли в Java иметь класс, наследуемый от двух разных классов в зависимости от некоторой переменной? - PullRequest
1 голос
/ 13 июля 2011

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

Спасибо

Bryan

Ответы [ 4 ]

2 голосов
/ 13 июля 2011

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

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

0 голосов
/ 13 июля 2011

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

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

0 голосов
/ 13 июля 2011

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

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

0 голосов
/ 13 июля 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...