Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
7Alex
216 / 0 / 1
Регистрация: 24.06.2014
Сообщений: 144
#1

Переопределение методов - Программирование Android

15.04.2016, 12:27. Просмотров 222. Ответов 1
Метки нет (Все метки)

Здравствуйте! Помогите, пожалуйста разобраться.

При вызове метода B.aa("Тест"), я получаю вывод в логах из методов B.aa(String x) и B.aa(String x, Integer y), а ожидаю только из B.aa(String x).
Получается что-же в методе A.aa(String x) вызывается уже переопределённый метод и класса B, а не исходный из класса A? Так и должно быть?
Ниже я написал сильно упрощённый пример своего кода.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public class A
{
    protected void aa (String x)
    {
        aa(x, null);
    }
    
    protected void aa (String x, Integer y)
    {
        if (y != null)
            ;
    }
}
public class B extends A
{
    @Override
    protected void aa(String x)
    {
        super.aa(x);
        android.util.Log.i("DEBUG", "B.aa(x);");
    }
    
    @Override
    protected void aa(String x, Integer y)
    {
        super.aa(x, y);
        android.util.Log.i("DEBUG", "B.aa(x, y);");
    }
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.04.2016, 12:27     Переопределение методов
Посмотрите здесь:

Переопределение ViewBinder на C# - Программирование Android
Здравствуйте. Пытаюсь сделать урок, только на C# на VS13 с Xamarin. Код MainActivity public class MainActivity :...

Переопределение подкласса - Программирование Android
Гуру ООП, помогите! Запутался окончательно... Возможно ли вообще подобное: Есть класс вида: public class adapter_My extends...

Переопределение метода в Runtime - Программирование Android
Создаем класс именно так BroadcastReceiver receiver = new BroadcastReceiver(); Дальше, надо в receiver переопределить onReceive....

Переопределение кнопки Home - Программирование Android
Как переопределить кнопку HomeButton? assert getSupportActionBar() != null; action_bar = getSupportActionBar(); ...

Переопределение onSaveInstanceState(Bundle) и отображение текста по нажатию - Программирование Android
Наверное сложно будет понять чего я хочу, но вдруг... Через Intent из родительской активности перехожу в дочернюю. Там при нажатии...

Разобратся в логике работы методов - Программирование Android
Привет всем,совсем запутался. есть виджет который обновляется по расписанию(это все работает),получает данные с внешнего класса. 1)Ява...

Создание класса и вызов его методов - Программирование Android
Код: public class DIYliq extends AppCompatActivity implements View.OnClickListener, SeekBar.OnSeekBarChangeListener { //... int...

Не вижу абстрактных методов в классе BaseAdapter - Программирование Android
Когда создаю свой класс, наследующий BaseAdapter, требуется реализовать 4 абстрактных метода: getCount(), getItem(), getItemId, getView....

Вызов методов Context из статичного контекста - Программирование Android
Столкнулся с тем, что не могу получить содержимое ресурса из созданных классов. К примеру getString() не доступен. Нашел такой вариант...

Одновременное использование новых и старых методов под разные версии андроида - Программирование Android
Например сервис уведомлений. Для 2.3 используется класс NotificationManager, а начиная с версии 3.0 уже используется класс...

Диплом: "Исследование приемов и методов прошивки мобильных устройств на базе ОС Андроид" (нужна информация) - Программирование Android
Тема: Исследование приемов и методов прошивки мобильных устройствна базе ОС Андройд. Не могу придумать введение,помогите...

Переопределение методов - Java
Добрый вечер! Изучаю Java самостоятельно, дошел до темы "переопределение методов" и у меня возник вопрос. Как понять? Вызов...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
YuraAAA
1567 / 1309 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
15.04.2016, 12:38     Переопределение методов #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
7Alex, ну всё верно.
Смотрите какая цепочка вызовов получается:

Класс B: Вы вызываете метод #aa(String).
super.aa(x) -> ведёт к вызову метода aa(String) из класса A
aa(String) в классе A вызывает метод aa (String x, Integer y).
НО! Этот метод (с двумя аргументами) переопределён, значит вызовется переопределённый метод в классе B.
Переопределённый метод в классе B (aa(String x, Integer y)) имеет вызов метода суперкласса. super.aa(x, y);
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru