Основы программирования на Java
Основы программирования на Java
ОглавлениеВВЕДЕНИЕОСНОВНЫЕ ПОНЯТИЯ 1. ПЕРЕМЕННЫЕ 2. ТИПЫ 2.1. Простые типы 2. 2.1.2. Символы 2.1.3. Тип boolean 2.2. Приведение типов 3. МАССИВЫ 3.1. Многомерные массивы 4. ОПЕРАТОРЫ 4.1. Арифметические операторы 4.1.1. Оператор деления по модулю 4.1.2. Арифметические операторы присваивания 4.1.3. Инкремент и декремент 4.2. Целочисленные битовые операторы и операторы отношений 4.3. Операторы отношений 4.4. Булевы логические операторы 4.5. Тернарный оператор if-then-else 4.6. Приоритеты операторов 5. УПРАВЛЕНИЕ ВЫПОЛНЕНИЕМ ПРОГРАММЫ 5.1. Условный оператор if-else 5.2. Опреатор break 5.3. Оператор switch 5.4. Оператор return 6. ЦИКЛЫ 6.1. Цикл while 6.2. Цикл do-while 6.3. Цикл for 6.4. Оператор continue ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ НА JAVA 7. КЛАССЫ 7.1. Переменные класса 7.2. Оператор new 7.3. Объявление методов 7.4. Вызов метода 7.5. Скрытие переменных 7.6. Конструкторы 7.7. Совмещение методов 7. 8. Ссылка this 7.9. Наследование 7.10. Ссылка super 7.11. Замещение методов 7.12. Динамическое назначение методов 7.13. Директива final 7.14. Деструкторы 7.15. Статические методы Директива final, деструкторы и статические методы 7.16. Абстрактные классы 8. ПАКЕТЫ И ИНТЕРФЕЙСЫ 8.1. Пакеты 8.2. Интерфейсы 9. ОБРАБОТКА ИСКЛЮЧЕНИЙ 9.1. Основы механизма исключений 9.2. Типы исключений 9.3. Неперехваченные исключения 9.4. Операторы try и catch 9.5. Несколько разделов catch 9.6. Вложенные операторы try 9.7. Оператор throw 9.8. Оператор throws Операторы throw и throws 9.9. Оператор finally 10. МНОГОПОТОЧНОЕ ПРОГРАММИРОВАНИЕ 10.1. Модель легковесных процессов в Java 10.2. Подпроцесс 10.3. Интерфейс Runnable 10.4. Приоритеты подпроцессов 10.5. Синхронизация 10.6. Методы программного интерфейса легковесных процессов 11.1. Работа с файлами 11.2. Каталоги Классы InputStream и OutputStream 11. 3. Класс InputStream 11.4. Класс OutputStream Файловый поток FilelnputStream и FileOutputStream 11.5. Файловый поток FilelnputStream 11.6. Файловый поток FileOutputStream 12. ПРОГРАММИРОВНИЕ ГРАФИЧЕСКИХ ПОЛЬЗОВАТЕЛЬСКИХ ИНТЕРФЕЙСОВ 12.1. Компоненты 12.2. Класс Container 12.3. Класс Canvas 12.4. Класс Label 12.5. Класс Button 12.6. Класс Checkbox 12.7. Класс CheckboxGroup 12.8. Класс Choice 12.9. Класс List 12.10. Класс Scrollbar 12.11. Класс TextField 12.12. Класс TextArea 12.13. Стратегии размещения компонентов 12.14. Программирование окон – Window 12.15. Программирование меню 12.16. Модель обработки событий от компонентов ЗАКЛЮЧЕНИЕ БИБЛИОГРАФИЧЕСКИЙ СПИСОК |
Вопрос 34 (this и super)
«О чем говорят ключевые слова «this», «super», где и как их можно использовать?»
1. Слова this и super — это два специальных ключевых слова в Java, которые представляют соответственно текущий экземпляр класса и его суперкласса.
1.1. Один из примеров использования this и super — это вызовы конструкторов. Внутри класса для вызова своего конструктора без аргументов используется this(), тогда как super() используется для вызова конструктора без аргументов («конструктора по умолчанию») суперкласса. Таким способом вызывать можно не только конструктор без аргументов, но и вообще любой другой конструктор, передав ему соответствующие параметры.
1.2. Также this и super в Java используются для обращения к переменным экземпляра класса и его суперкласса. К ним можно обращаться и без префиксов
скрытый текст1.2.1. Классическим примером такого подхода является использование this внутри конструктора, который принимает параметр с таким же именем, как и у переменной экземпляра.
1.3. Во внутренних классах с помощью этих слов очень удобно ссылаться на внешний класс, используя форму записи Outer.this для его текущего экземпляра и Outer.super — для его родителя, где Outer имя внешнего класса.
2. Чем this и super похожи:
— И this, и super
— И this, и super могут использоваться внутри конструкторов для вызова других конструкторов по цепочке.
— Внутри конструктора this и super должны стоять выше всех других выражений, в самом начале, иначе компилятор выдаст сообщение об ошибке. Из чего следует, что в одном конструкторе не может быть одновременно и this(), и super().
3. Чем this и super различаются:
— Переменная this ссылается на текущий экземпляр класса, в котором она используется, тогда как super — на текущий экземпляр родительского класса.
— Каждый конструктор при отсутствии явных вызовов других конструкторов неявно вызывает с помощью super() конструктор без аргументов родительского класса, при этом всегда остается возможность явно вызвать любой другой конструктор с помощью либо
3.1. Имея дело с перегруженными конструкторами, удобно один конструктор вызывать из другого через ключевое слово this. При выполнении конструктора this() сначала выполняется перегруженный конструктор, который соответствует указанному списку параметров. Затем выполняются операторы, находящиеся внутри исходного конструктора, если таковые существуют.
3.1.1. Использование перегруженных конструкторов через конструктор this() позволяет исключить дублирование кода, уменьшая время загрузки классов. Но следует быть осторожным, так как конструкторы, которые вызывают конструктор this(), выполняются немного медленнее.
3.2. При отсутствии других явных вызовов сначала будет выполнен конструктор по умолчанию (без параметров) каждого суперкласса, начиная с базового. По умолчанию они вызываются в порядке подчиненности классов (сверху вниз). В этом есть определенный смысл. Поскольку суперкласс не имеет никакого знания о каком-либо подклассе, любая инициализация, которую ему нужно выполнить, является отдельной. По возможности она должна предшествовать любой инициализации, выполняемой подклассом. Поэтому она и должна выполняться первой.
Документация JDK 19 — Главная
- Главная
- Ява
- Java SE
- 19
Обзор
- Прочтите меня
- Примечания к выпуску
- Что нового
- Руководство по миграции
- Загрузить JDK
- Руководство по установке
- Формат строки версии
Инструменты
- Технические характеристики инструментов JDK
- Руководство пользователя JShell
- Руководство пользователя средства упаковки
Язык и библиотеки
- Обновления языка
- Основные библиотеки
- HTTP-клиент JDK
- Учебники по Java
- Модульный JDK
- Руководство программиста API бортового регистратора
- Руководство по интернационализации
Технические характеристики
- Документация API
- Язык и ВМ
- Имена стандартных алгоритмов безопасности Java
- банок
- Собственный интерфейс Java (JNI)
- Инструментальный интерфейс JVM (JVM TI)
- Сериализация
- Проводной протокол отладки Java (JDWP)
- Спецификация комментариев к документации для стандартного доклета
- Прочие характеристики
Безопасность
- Руководство по безопасному кодированию
- Руководство по безопасности
Виртуальная машина HotSpot
- Руководство по виртуальной машине Java
- Настройка сборки мусора
Управление и устранение неполадок
- Руководство по устранению неполадок
- Руководство по мониторингу и управлению
- Руководство по JMX
Client Technologies
- Руководство по специальным возможностям Java
Java — Глава 11 | Что такое Super Keyword в Java
Этот раздел создан для того, чтобы вы поняли, что такое Super Keyword в Java и как использовать Super во время написания кода. Супер не имеет ничего общего с Суперменом, поэтому, пожалуйста, перестаньте думать в этом направлении. Слово «супер» намекает на суперкласс. Вот откуда появилось название ключевого слова.
Что такое ключевое слово Super в Java
Ключевое слово Super в основном используется для переопределения сценариев. Таким образом, если мы используем super в месте, где имя метода или имя переменной совпадают как для суперкласса, так и для подкласса, использование super позволит JVM узнать, что вы на самом деле говорите о суперклассе.
В случае конструкторов, когда вы пытаетесь создать экземпляр подкласса в Java, также неявно создается экземпляр суперкласса. В качестве альтернативы вы можете ссылаться на него, явно используя ключевое слово Super.
Ограничения:
Вот два ограничения, с которыми я столкнулся, работая над ним:
- Вы не можете вызывать частный метод, используя super.
- Вы не можете использовать super в статическом контексте.
Надеюсь, все вышеперечисленное ответило только на часть вопроса «Что такое ключевое слово super в Java». Чтобы получить полную картину, вы должны увидеть, как пример принимает форму.
Пример для изучения того, что такое супер ключевое слово в Java
Представьте себе сценарий суперкласса и подкласса.
Эй, теперь, когда я думаю об этом, это может быть как-то связано с Суперменом. Мы можем немного пофантазировать, чтобы создать суперкласс Superman, у которого есть подкласс Wonderwoman, расширяющий его. Почему ты спрашиваешь? Потому что Супермен может летать, как и Чудо-женщина. Мы создадим метод fly, который сможет использовать даже наш подкласс Wonderwoman.
Я собираюсь добавить этот класс прямо в Eclipse IDE. Таким образом, с вещами намного проще работать.
Я также создал подкласс Чудоженщины, который расширяет суперкласс Супермена. У него тот же метод, что и у Супермена, и еще один дополнительный метод. Кроме того, у него есть одна и та же переменная String, которая была инициализирована разными вещами.
Для ссылки на переменную экземпляра суперкласса
Я просто собираюсь использовать super.laser для отображения переменной в методе fly().
После этого я создам экземпляр подкласса и с его помощью вызову метод fly().
Если вы попытаетесь запустить приведенную выше программу, вы можете получить следующий результат:
Далее показано, что переменная из суперкласса может быть вызвана с помощью ключевого слова super. Если бы мы просто попытались отобразить «лазер», мы бы получили на выходе «Нет лазера». Вы можете попробовать это!
Чтобы вызвать метод суперкласса
Теперь мы попробуем вызвать метод суперкласса fly(), используя функциональность super.fly().
Код будет выглядеть примерно так:
Я вызвал метод lasso(), где я поместил super.fly() для вызова метода fly из суперкласса. Поскольку у метода fly суперкласса было «Woosh!» для отображения мы получаем результат как есть.
Для вызова конструктора родительского класса
Помимо вышеупомянутого использования ключевого слова super, оно часто используется для вызова конструктора суперкласса.
В конструкторе подкласса неявно вызывается ключевое слово super. Вам не нужно упоминать super(), чтобы вызвать его.
В нашем маленьком примере выше, если мы очистим вещи, удалив переменные и методы, вот как все будет выглядеть:
Я использовал строку «Я Супермен», которая будет отображаться, чтобы помочь идентифицировать конструктор.
Наш класс Wonderwoman после очистки будет выглядеть примерно так:
Здесь при создании экземпляра Wonderwoman в основном методе super() будет неявно вызываться. Таким образом, запуск приведенного выше кода даст вам:
Вы также можете явно вызвать конструктор. Просто введите super() в конструкторе подкласса.
Если вы запустите приведенную выше программу, вы получите тот же результат, что и выше.
ПРИМЕЧАНИЕ: Помните, что когда вы пытаетесь вызвать конструктор суперкласса с помощью super(), он должен быть первой строкой в конструкторе подкласса.