Дом Социальные медиа Разработка Android-приложений: Java-классы, которые должны (и не должны) быть расширенными - манекены

Разработка Android-приложений: Java-классы, которые должны (и не должны) быть расширенными - манекены

Оглавление:

Видео: Урок 3. Первое андроид-приложение. Структура android проекта. Создание эмулятора Android (AVD) 2025

Видео: Урок 3. Первое андроид-приложение. Структура android проекта. Создание эмулятора Android (AVD) 2025
Anonim

Если класс Java не сломан, не исправляйте его. Предположим, вы хотите добавить функциональность к существующему классу Java. Вам нравится класс активности Android, но предварительно объявленный класс Activity ничего не отображает на экране. Вы переписываете класс активности Android? №

Вместо того, чтобы переписывать существующий класс, вы расширяете класс. Даже в Android-приложении «Hello» ничего не делать, вы пишете

public class MyActivity extends Activity

Затем в объявлении класса MyActivity вы пишете

@Override public void onCreate (Bundle savedInstanceState) {супер. OnCreate (savedInstanceState); setContentView (R. layout. main);}

Класс MyActivity создает новые функциональные возможности, расширяя большинство функциональных возможностей Android Android, переопределяя метод класса «умный мертвый» класса Activity.

Окончательные классы Java

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

Но некоторые классы не предназначены для расширения. Возьмем, к примеру, класс String Java. Строка String - это строка. Вы не хотите, чтобы кто-то MyString. чтобы вернуть длину времени, необходимого для скремблирования символов строки. Для предотвращения того, что кто-то делает что-то неожиданное, нетрадиционное или необычное с помощью методов строки, создатели Java сделали класс String окончательным:

public final class String

Некоторые из предварительно объявленных классов Android также являются окончательными, в том числе Телефония и MediaStore.

Абстрактные классы Java

Так же, как последний класс ненавидит быть расширенным, абстрактный настаивает на расширении. Android ViewGroup является примером абстрактного класса.

public abstract класс ViewGroup {public void bringChildToFront (просмотр дочернего элемента) {int index = indexOfChild (child); if (index> = 0) {removeFromArray (index); addInArray (child, mChildrenCount); ребенок. mParent = this;}} protected abstract void onLayout (boolean changed, int l, int t, int r, int b);}

Android Group ViewGroup. java-файл имеет длину более 3 700 строк. Таким образом, этот пример содержит лишь небольшую часть кода файла. Но вы можете видеть, как класс становится абстрактным. Ни для кого не удивляет, слово abstract предшествует классу слов. Но абстрактное слово также начинает объявление некоторых методов, принадлежащих классу.

Учредители Android решили, что идея ViewGroup полезна. Они были правильными, потому что ваши любимые макеты Android (LinearLayout, RelativeLayout и т. Д.) Являются подклассами ViewGroup.Они также поняли, что из одного вида ViewGroup в другой некоторые функции не меняются. Например, приведенный выше пример определяет метод bringChildToFront, а подклассы ViewGroup наследуют этот метод.

Но основатели также поняли, что некоторые аспекты ViewGroup не имеют смысла, если вы не работаете с определенной группой. Например, LinearLayout позиционирует вещи один за другим, а RelativeLayout позиционирует вещи сверху, снизу и сбоку друг от друга. Таким образом, код выше не имеет полномасштабного метода onLayout.

Объявление onLayout не имеет тела метода. Но Android требует, чтобы каждый подкласс класса ViewGroup объявлял свой собственный метод onLayout. Java применяет это требование, когда вы объявляете метод onLayout абстрактным.

Как разработчик вы не можете создать объект из абстрактного класса. Если вы пишете

ViewGroup group = new ViewGroup ();

Java говорит вам, что вы плохо себя чувствуете. Чтобы сделать что-то полезное с классом ViewGroup, вам нужен подкласс класса ViewGroup. Подкласс имеет конкретную версию каждого абстрактного метода в классе ViewGroup:

package com. allmycode. образцы; импорт андроида. содержание. Контекст; импорт андроида. Посмотреть. ViewGroup; public class MyLayout extends ViewGroup {public MyLayout (контекстный контекст) {супер (контекст);} @Override protected void onLayout (boolean changed, int l, int t, int r, int b);}}
Разработка Android-приложений: Java-классы, которые должны (и не должны) быть расширенными - манекены

Выбор редактора

Большинство используемых команд Junos - манекены

Большинство используемых команд Junos - манекены

Версия и версия версии show version: перечисляет версию операционной системы Junos на вашем устройстве , Он также показывает имя хоста устройства и номер модели Juniper. show version detail: Показывает версию всех процессов Junos, запущенных на устройстве. Аппаратное обеспечение шасси и аппаратное обеспечение корпуса. Показать аппаратное обеспечение корпуса: отображает аппаратное обеспечение ...

NAT Параметры перевода исходного кода в Junos - dummies

NAT Параметры перевода исходного кода в Junos - dummies

Службы безопасности - это не единственные сервисы, предоставляемые SRX ( хотя службы безопасности являются наиболее важными). Вы можете настроить другие службы, такие как трансляция адреса источника NAT. По сути, NAT должен быть сконфигурирован исключительно для расширения полезности IP-адресов. NAT делает это, заменяя один набор заголовков пакетов ...

Выбор Вопросы для запроса сетевого оборудования Поставщик - манекены

Выбор Вопросы для запроса сетевого оборудования Поставщик - манекены

Рассмотреть возможность рассмотрения процессов разработки программного обеспечения поставщиков как часть вашей оценки новой сети и оборудования для обеспечения безопасности, поскольку она может сэкономить вам время и деньги по дороге. Вот несколько вопросов, которые вы можете задать поставщикам о своих процессах разработки программного обеспечения: версии программного обеспечения: узнать, сколько существует различных версий программного обеспечения ...

Выбор редактора

Используйте Creative Auto Settings на камерах Canon Rebel серии T3 - манекены

Используйте Creative Auto Settings на камерах Canon Rebel серии T3 - манекены

, Когда вы используете режимы сцены на вашем Canon EOS Rebel T3 или T3i камера выбирает настройки, которые отображают ваш объект, используя традиционный «вид» для сцены. Режим Creative Auto позволяет вам немного контролировать. Как следует из названия, этот режим по-прежнему в основном автоматический, но если вы проверите ...

Как использовать FlexiZone-одиночную автофокусировку на вашем Canon EOS 80D - манекены

Как использовать FlexiZone-одиночную автофокусировку на вашем Canon EOS 80D - манекены

FlexiZone- Режим одиночной автофокусировки позволяет выбрать конкретную точку автофокусировки на вашем EOS 80D. В центре экрана вы видите одиночную маленькую рамку фокуса, как показано слева. Изображение показывает, как выглядит кадр в режиме Live View; в режиме видео он немного больше. В любом случае, следующий шаг ...

Как использовать Face + Tracking Автофокусировка на вашем Canon EOS 80D - манекены

Как использовать Face + Tracking Автофокусировка на вашем Canon EOS 80D - манекены

В Face + Tracking, который по умолчанию используется как для фотосъемки, так и для видеозаписи на вашем EOS 80D, камера ищет лица в кадре. Если он находит один, он отображает белый фокус на лице, как показано на. В групповом снимке, где распознается более одного лица ...

Выбор редактора

Как загрузить фото с Facebook Mobile - манекены

Как загрузить фото с Facebook Mobile - манекены

Facebook Mobile теперь позволяет загружать фотографии. На общественных мероприятиях можно найти два типа людей. Есть скрапбукеры, которые всегда помнят, чтобы принести свою причудливую камеру для каждого собрания. Тогда есть люди, которые никогда не собираются фотографировать, но кто, когда девушка с днем ​​рождения взрывает ее свечи или ...

Как обновить свой статус Facebook - макеты

Как обновить свой статус Facebook - макеты

Самый распространенный тип сообщения, которое вы видите, люди делают из Facebook Share box - это базовое текстовое обновление, которое отвечает на вопрос «Что у вас на уме? «Люди относятся к этому типу сообщения как к статусу или как к статусу. Обновления статуса бывают быстрыми, короткими и полностью открытыми для интерпретации. ...

Как загрузить свой профиль Facebook Фото - dummies

Как загрузить свой профиль Facebook Фото - dummies

Загрузка изображения в Facebook поможет вам отделить вас от других люди с похожими именами. Когда вы впервые подписываетесь на Facebook, у вас есть возможность загрузить фотографию, чтобы представлять вас. Убедитесь, что у вас есть фотография, которую вы хотите сохранить на каком-то месте на жестком диске вашего компьютера, и выполните следующие действия: