Изначально я вижу два исправления.Кроме того, есть некоторые моменты, которые вы должны учитывать.
Переопределить действие в дочернем классе и вызвать родительский метод
public class BaseActivity extends Activity {
public void act(View view) {
// Implementation
}
}
public class LoginActivity extends BaseActivity {
@Override
public void act(View view) {
super.act(view);
}
}
Сохранение окончательной реализации
Как вы упомянули, ваш метод является окончательным.Итак, если вы хотите сохранить реализацию исключительно в BaseActivity, вы можете сделать что-то вроде:
public class BaseActivity extends Activity {
public final void handleAct(View view) {
// Implementation
}
}
public class LoginActivity extends BaseActivity {
@Override
public void act(View view) {
handleAct(view);
}
}
Является ли действие общим для всех действий?
Еще один моментвы можете учитывать тот факт, что ваш базовый класс должен реализовывать методы, которые являются общими для всех дочерних действий.Если act
относится только к LoginActivity
, то он не должен быть реализован в BaseActivity
, а только в LoginActivity
. В противном случае любой класс, который расширяет BaseActivity
, будет нести метод act без необходимости..
РЕДАКТИРОВАТЬ Проверьте комментарии pankaj-kumar .Возможно, все, что вам нужно сделать, это добавить public
к сигнатуре метода:
public fun act(view: View) {
...
}