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

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

Войти
Регистрация
Восстановить пароль
 
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
#1

Абстракция - Программирование Android

17.01.2015, 12:52. Просмотров 328. Ответов 6
Метки нет (Все метки)

Плыть бобру,
тьфу,
быть добру!

Тут в свете вопроса где-то внизу по поводу убиения AlarmManager'a, подумал я кое что задумать, но...вопрос не в этом.

Из описалова

You do not instantiate this class directly; instead, retrieve it through Context.getSystemService(Context.ALARM_SERVICE).
а getSystemService - это оказалось не просто так - это

public abstract Object getSystemService (String name)

Собственно вопрос: как метод без реализации что-то возвращает, создает, инстанциирует, ...

Чё-то моя голова поломалась сутра.

Заранее благодарю за ответ
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.01.2015, 12:52     Абстракция
Посмотрите здесь:

Абстракция - C++
Мужики, объясните пожалуйста термин "Абстракция" в С++ на примере более понятно. а то в вики научно описано без примеров.

Абстракция - C#
Есть абстрактный класс, есть классы-наследники, реализующие методы абстрактного класса. В одном классе-наследнике хочу добавить методы...

абстракция - C++
оъясните,пжлста,на примере суть абстракции

Абстракция в С++ - C++
Не думал , что столько проблем возникнет с этим на С++ , куда проще все это и на Delphi и в Java, но хватит нытья суть вопроса вот у меня...

Java абстракция - Java SE
Начал читать Герберт Шилдта. Надеюсь мой выбор правильный. Дошёл до описания Абстракции, и тут немного не понял. В главе имеется ввиду...

Интерфейс и Абстракция - ООП и паттерны
Верно ли то что Интерфейс, это тот же Абстрактный класс, но который содержит в себе, только Абстрактные методы.

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Gabberr
102 / 102 / 17
Регистрация: 13.10.2009
Сообщений: 402
17.01.2015, 14:36     Абстракция #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Сам класс Context абстрактный, то-есть не может быть экземпляра этого класса.
Везде где есть объект типа Context, например
Java
1
Context context = getBaseContext();
имеется на самом деле экземпляр класса наследующего Context и вот в классе наследнике уже есть реализация метода getSystemService()
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
17.01.2015, 15:29  [ТС]     Абстракция #3
Gabberr, точно же ж...
Спасибо

Добавлено через 46 минут
АЛЯРМА
АХТУНГ
АТТЕНСИОН


Поспешил...сростается да не всё...

Допустим имеем в Activity

Java
1
AlarmManager amAlarmManager = (AlarmManager) getSystemService(ALARM_SERVICE)
беру я всё это дело и еду по цепочке .

Для Activity таки есть перегруженный метод getSystemService(String name)

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
@Override
public Object getSystemService(String name) {
        if (getBaseContext() == null) {
           throw new IllegalStateException(
                    "System services not available to Activities before onCreate()");
        }
 
       if (WINDOW_SERVICE.equals(name)) {
          return mWindowManager;
       }
        return super.getSystemService(name);
   }
}
который фактически срабатывает только для константы WINDOW_SERVICE, а остальное сбрасывает на метод суперкласса, а именно класса ContextThemeWrapper

Java
1
2
3
4
5
6
7
8
9
@Override public Object getSystemService(String name) {
         if (LAYOUT_INFLATER_SERVICE.equals(name)) {
             if (mInflater == null) {
                 mInflater = LayoutInflater.from(mBase).cloneInContext(this);
             }
             return mInflater;
         }
         return mBase.getSystemService(name);
     }
который, в свою очередь, обслуживает только константу LAYOUT_INFLATER_SERVICE, а остальное сбрасывает на mBase.getSystemService(name), где mBase

Java
1
 private Context mBase;
Т.е. для константы ALARM_SERVICE вызывается абстрактный метод getSystemService класса Context

Я опять в потерях
Gabberr
102 / 102 / 17
Регистрация: 13.10.2009
Сообщений: 402
17.01.2015, 15:36     Абстракция #4
Посмотрите на момент инициализации переменной
Java
1
 private Context mBase;
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
17.01.2015, 15:40  [ТС]     Абстракция #5
Конечно, смотрел

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class ContextThemeWrapper extends ContextWrapper {
     private Context mBase;
     private int mThemeResource;
     private Resources.Theme mTheme;
     private LayoutInflater mInflater;
 
     public ContextThemeWrapper() {
         super(null);
     }
     
     public ContextThemeWrapper(Context base, int themeres) {
         super(base);
         mBase = base;
         mThemeResource = themeres;
     }
 
     @Override protected void attachBaseContext(Context newBase) {
         super.attachBaseContext(newBase);
         mBase = newBase;
     }
Gabberr
102 / 102 / 17
Регистрация: 13.10.2009
Сообщений: 402
17.01.2015, 15:44     Абстракция #6
Ну тогда где и с какими параметрами вызывается конструктор или метод attachBaseContext, вы же понимаете что не может быть экземпляра абстрактного класса, по факту там скорей всего ContextWrapper или другой наследник
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.01.2015, 17:43     Абстракция
Еще ссылки по теме:

Абстракция классов - C++
Всем утра доброго ;) Люди знающие и люди опытные подскажите вот такую вещь: как планировать правильно иерархию классов, что бы только...

Наследование и абстракция - C++
Где ошибка? На всякий все классы кинул. >d:\UserName\программирование\с++\проекты...

Абстракция текста [C++] - C++
Написал программу которая представляет собой абстракцию текста с классом контейнером. Писал в VS 2008 professional, при компиляции выдает 4...

Абстракция «сокрытие информации»? - C#
Всем привет, смотрю курс по c# , и вот на одном из уроков посвященному динамическим и анонимным типам, а также "языку" LINQ автор видео...


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

Или воспользуйтесь поиском по форуму:
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
17.01.2015, 17:43  [ТС]     Абстракция #7
Та такое ж...
Ну, оставим эту затею - разбиратся в исходниках - дело неблагодарное само по себе.
Работа проделана большая, но, в итоге, бесполезная
Yandex
Объявления
17.01.2015, 17:43     Абстракция
Ответ Создать тему
Опции темы

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