Для чего используется ключевое слово this в java
Ключевое слово this в JavaScript для начинающих
Что такое this?
Причина, по которой this вызывает столько путаницы у новичков, заключается в том, что контекст this меняется в зависимости от его использования.
Ситуации, когда this указывает на объект window
Если вы попытаетесь обратиться к ключевому слову this в глобальной области видимости, оно будет привязано к глобальному контексту, то есть — к объекту window в браузере.
Попробуйте выполнить этот код, например, в консоли браузера:
Использование this внутри объекта
This и вложенные объекты
Применение this во вложенных объектах может создать некоторую путаницу. В подобных ситуациях стоит помнить о том, что ключевое слово this относиться к тому объекту, в методе которого оно используется. Рассмотрим пример.
Особенности стрелочных функций
Стрелочные функции ведут себя не так, как обычные функции. Вспомните: при обращении к this в методе объекта, этому ключевому слову соответствует объект, которому принадлежит метод. Однако это не относится к стрелочным функциям. Вместо этого, this в таких функциях относится к глобальному контексту (к объекту window ). Рассмотрим следующий код, который можно запустить в консоли браузера.
Прислушаемся к MDN и не будем использовать стрелочные функции в качестве методов объектов.
Использование this в обычных функциях
Обращение к this из функции, которая была объявлена за пределами объекта, а потом назначена в качестве его метода
Ключевое слово new и this
Вот как можно работать со стандартными конструкторами JavaScript.
Вот ещё один пример использования функций-конструкторов.
О важности ключевого слова new
При вызове функции-конструктора с использованием ключевого слова new ключевое слово this указывает на новый объект, который, после некоторой работы над ним, будет возвращён из этой функции. Ключевое слово this в данной ситуации весьма важно. Почему? Всё дело в том, что с его помощью можно, используя единственную функцию-конструктор, создавать множество однотипных объектов.
Итоги
Уважаемые читатели! Возникали ли у вас сложности с пониманием ключевого слова this в JavaScript?
Руководство по ключевому слову this Java
Узнайте, как использовать ключевое слово this в Java для ссылки на текущий объект.
1. введение
В этом уроке мы рассмотрим ключевое слово this Java.
Давайте рассмотрим, как и когда мы можем использовать это ключевое слово.
2. Устранение Неоднозначности Затенения Полей
Как мы видим здесь, мы используем this с полями name и age instance – чтобы отличить их от параметров.
3. Ссылки на конструкторы одного и того же класса
Наиболее распространенным вариантом использования является вызов конструктора по умолчанию из параметризованного конструктора:
Или мы можем вызвать параметризованный конструктор из конструктора без аргументов и передать некоторые аргументы:
Обратите внимание, что this() должен быть первым оператором в конструкторе, иначе произойдет ошибка компиляции.
4. Передача этого в качестве параметра
Здесь у нас есть print Instance() метод, в котором определено ключевое слово this |/аргумент:
5. Возврат этого
Мы также можем использовать это ключевое слово для возврата текущего экземпляра класса из метода.
6. Ключевое слово this Во Внутреннем классе
Мы также используем this для доступа к экземпляру внешнего класса из внутреннего класса:
Здесь, внутри конструктора, мы можем получить ссылку на экземпляр Keyword Test с помощью Keyword Test.this call . Мы можем пойти еще глубже и получить доступ к переменным экземпляра, таким как Ключевое слово Test.this.name поле.
7. Заключение
В этой статье мы исследовали ключевое слово this в Java.
Конструкторы, ключевое слово this, инициализаторы
На предыдущем занятии мы увидели как объявляются классы и создаются их экземпляры с помощью оператора:
ссылка = new имя_класса();
В частности, вот такой строчкой:
создавали объект класса Point:
В действительности, в момент создания объекта всегда происходит вызов специального метода (функции) класса, который называется конструктор:
Но у нас в классе Point нет никаких методов, там объявлены только две переменные x, y. Все так, но в Java в любой класс автоматически добавляет конструктор по умолчанию, если явно не записаны никакие другие конструкторы. Именно этот конструктор по умолчанию и вызывался при создании объектов класса Point.
Чтобы все было понятнее, давайте объявим свой конструктор в этом классе. Для этого используется такой синтаксис:
имя_класса([аргументы]) <
// тело конструктора (набор операторов)
>
И в нашем случае его можно прописать так:
А что если мы захотим прописать два конструктора и к существующему добавить еще один:
Так тоже можно делать. Теперь наш класс содержит оба конструктора и мы можем вызывать любой из них при создании объектов:
Это называется перегрузкой конструкторов, когда в одном классе несколько конструкторов с разными аргументами. На практике это используется довольно часто.
Ключевое слово this
Давайте теперь предположим, что во втором конструкторе имена аргументов называются также как и поля:
Очевидно, что здесь x, y будут восприниматься как локальные аргументы и никакого отношения к переменным класса x, y они не будут иметь. Но, можно ли как то явно указать, что мы хотим обратиться именно к полям объекта, а не к аргументам конструктора? Да, можно, и делается это с помощью специального ключевого слова this:
По смыслу this – это ссылка на текущий экземпляр объекта. То есть, если нам внутри самого объекта требуется оперировать ссылкой на него, то для этого используется ключевое слово this. Мало того, через this можно вызывать один конструктор из другого. Например, добавим в класс Point еще одно поле color – цвет точки. И будем по умолчанию инициализировать его нулем:
Смотрите что получается. У нас конструкторах происходит дублирование кода. Это плохой стиль программирования. Чтобы этого избежать, можно во втором конструкторе вызвать сначала первый для начальной инициализации полей, а затем, изменить значения координат x, y:
Вот эта строчка this(); как раз выполняет вызов первого конструктора перед изменением полей x, y. В результате, никакого дублирования не происходит. Вот так двояко можно применять ссылку this: и для доступа к полям текущего объекта, и для вызова конструкторов.
Инициализаторы
Давайте еще раз внимательно посмотрим на пример нашего класса и зададимся вопросом: что делает первый конструктор без аргументов? Фактически, он выполняет начальную инициализацию полей класса Point. Именно поэтому мы его отдельно вызываем во втором конструкторе. Но это не лучший ход. В классах языка Java можно создавать специальный блок, который так и называется – инициализатор. Он автоматически выполняется один раз при создании объекта до вызова конструкторов. Записывается инициализатор следующим образом:
Смотрите, здесь в отдельном блоке задаются начальные значения всех переменных класса, а затем, отдельно вызываются конструкторы. При этом, вызывать первый конструктор из второго уже нет необходимости – данные уже инициализированы указанными значениями. Это очень удобно.
Глядя на первый конструктор, в котором нет никакой реализации, возникает соблазн его попросту убрать из класса Point. Давайте попробуем это сделать и посмотрим к чему это приведет:
При запуске программы компилятор выдал ошибку, что невозможно создать объект при вызове конструктора без аргументов. Вместе с тем, нам бы хотелось иметь такую функциональность – создавать экземпляры без указания конкретных координат. Именно для этого следует иметь первый конструктор без аргументов.
Подвиг 1. Объявить класс Rect для представления прямоугольника, в котором хранятся две координаты: верхнего левого и правого нижнего углов. Реализовать три конструктора: первый – без аргументов; второй с четырьмя аргументами для двух координат; третий – с четырьмя аргументами (координата левого верхнего угла, ширина и высота). Создать несколько экземпляров с вызовом разных конструкторов и выводом значений полей в консоль.
Подвиг 2. Объявить класс Triangle, хранящий три координаты вершин. Координаты представить в виде ссылок на класс Point, который рассмотрен на этом занятии. Реализовать два конструктора: без аргументов и с шестью аргументами (по два на каждую координату). Создать два объекта, вывести координаты вершин по каждому объекту в консоль.
Подвиг 3. Объявить класс Line для представления линии на плоскости, хранящий две координаты: начало и конец линии. Создать два объекта этого класса и в функции main() определить: пересекаются ли эти две линии.
Видео по теме
#11 Концепция объектно-ориентированного программирования (ООП)
#12 Классы и создание объектов классов
#13 Конструкторы, ключевое слово this, инициализаторы
#14 Методы класса, сеттеры и геттеры, public, private, protected
#15 Пакеты, модификаторы конструкторов и классов
#16 Ключевые слова static и final
#17 Внутренние и вложенные классы
#18 Как делается наследование классов
#19 Ключевое слово super, оператор instanceof
#20 Модификаторы private и protected, переопределение методов, полиморфизм
#21 Абстрактные классы и методы
#24 Анонимные внутренние классы
#25 Перечисления (enum)
#26 Обобщения классов (Generics)
#27 Ограничения типов, метасимвольные аргументы, обобщенные методы и конструкторы
#28 Обобщенные интерфейсы, наследование обобщенных классов
© 2021 Частичное или полное копирование информации с данного сайта для распространения на других ресурсах, в том числе и бумажных, строго запрещено. Все тексты и изображения являются собственностью сайта
Ключевое слово THIS в Java
Ключевое слово THIS – это ссылочная переменная в Java, которая ссылается на текущий объект.
Ниже перечислены различные варианты использования ключевого слова «this» в Java:
Примеры
Давайте скомпилируем и запустим код.
Наш ожидаемый результат для A и B должен быть инициализирован значениями 2 и 3 соответственно.
Но значение равно 0, почему? Давай подумаем.
В методе Set data аргументы объявляются как a и b, а переменные экземпляра также именуются как a и b.
Во время выполнения компилятор запутался. Является ли «a» слева от назначенного оператора переменной экземпляра или локальной переменной. Следовательно, он не устанавливает значение ‘a’ при вызове набора данных метода.
Решением является ключевое слово “this”
Добавьте оба «a» и «b» с ключевым словом «this», за которым следует оператор точки (.).
Во время выполнения кода, когда объект вызывает метод ‘setdata’. Ключевое слово ‘this’ заменяется обработчиком объекта “obj.” (См. Изображение ниже).
Итак, теперь компилятор знает,
Переменные инициализируются правильно, и отображается ожидаемый результат.
Предположим, вы достаточно умны, чтобы выбирать разные имена для вашей переменной экземпляра и аргументов методов.
Но на этот раз вы создаете два объекта класса, каждый из которых вызывает метод набора данных.
Как компилятор определит, должен ли он работать с переменной экземпляра объекта 1 или объекта 2.
Что ж, компилятор неявно добавляет переменную экземпляра с ключевым словом «this» (рисунок ниже).
Таким образом, когда объект 1 вызывает метод набора данных, к переменной экземпляра добавляется его ссылочная переменная.
Пока объект 2 вызывает метод набора данных, переменная экземпляра объекта 2 изменяется.
Этот процесс заботится самим компилятором. Вам не нужно явно добавлять ключевое слово this, если нет исключительной ситуации, как в нашем примере.
Пример: чтобы узнать, как использовать this ключевое слово:
Шаг 1) Скопируйте следующий код в блокнот.
Шаг 2) Сохранение, компиляция Запустите код. Шаг 3) Значение ab отображается как ноль? Чтобы исправить ошибку, добавьте строку # 6 7 с ключевым словом “this”.
Шаг 4) Сохраните, скомпилируйте и запустите код. На этот раз значения ab установлены на 2 3 соответственно.
В чем смысл «this» в Java?
Обычно я использую this только в конструкторах.
Я понимаю, что он используется для идентификации переменной параметра (с помощью this.something ), если он имеет одно и то же имя с глобальной переменной.
ОТВЕТЫ
Ответ 1
this относится к текущему объекту.
Каждый нестатический метод работает в контексте объекта. Поэтому, если у вас есть такой класс:
Затем вызов frobnicate() на new MyThisTest() будет печатать
Так эффективно вы используете его для нескольких вещей:
Ответ 2
Ниже приведена копия и вставка из здесь, но очень хорошо объясняется все различные применения ключевого слова this :
Определение: Ключевое слово Javas this используется для ссылки на текущий экземпляр метода, на котором он используется.
Ниже приведены способы использования этого:
Чтобы специально указать, что вместо переменной или локальной переменной используется переменная экземпляра. То есть
Здесь это относится к переменной экземпляра. Здесь приоритет высокий для локальной переменной. Поэтому отсутствие this обозначает локальную переменную. Если локальная переменная, которая является именем параметра, не такая же, как переменная экземпляра, то независимо от this используется или нет, она обозначает переменную экземпляра.
this используется для ссылки на конструкторы
Это вызывает конструктор того же класса java, который имеет два параметра.
this используется для передачи текущего экземпляра java в качестве параметра
Как и выше, это также можно использовать для возврата текущего экземпляра
Примечание. Это может привести к нежелательным результатам при использовании во внутренних классах в двух указанных выше пунктах. Поскольку это будет относиться к внутреннему классу, а не к внешнему экземпляру.
this можно использовать для получения дескриптора текущего класса
Хотя это можно сделать с помощью
Как всегда, this связан с его экземпляром, и это не будет работать в статических методах.
Ответ 3
Чтобы быть полным, this также может использоваться для ссылки на внешний объект
Ответ 4
Он относится к текущему экземпляру определенного объекта, поэтому вы можете написать что-то вроде
Ответ 5
В Swing довольно распространено писать класс, который реализует ActionListener и добавляет текущий экземпляр (т.е. ‘this’) в качестве ActionListener для компонентов.
Ответ 6
Ответ 7
Это относится к экземпляру, на который вызывается метод
Ответ 8
Значение в скобках является неявным параметром, а сам объект является явным параметром, методы, которые не имеют явных параметров, используют неявные параметры, метод fillTank имеет как явный, так и неявный параметр.
Давайте более подробно рассмотрим метод fillTank в классе Car
Ответ 9
Ответ 10
это может использоваться внутри некоторого метода или конструктора.
Возвращает ссылку на текущий объект.
Ответ 11
Ключевое слово this используется для ссылки на текущую переменную блока, например, рассмотрим приведенный ниже код (просто пример, поэтому не ожидайте стандартного кода JAVA):
Вот оно. Выход будет «2». Если мы не использовали ключевое слово this, то вывод будет: 0
Ответ 12
Это «ссылка на объект в текущем контексте» эффективно. Например, чтобы распечатать «этот объект», вы можете написать:
Ответ 13
Быстрый поиск в Google принес этот результат: http://xahlee.org/java-a-day/this.html
В значительной степени ключевое слово «this» является ссылкой на текущий объект (сам).
Ответ 14
Если переменные экземпляра такие же, как переменные, объявленные в конструкторе, мы используем «this» для назначения данных.
Надеюсь, что это поможет.
Ответ 15
Я тоже искал тот же ответ и как-то не мог понять концепцию четко. Но, наконец, я понял это из ссылка
это ключевое слово в Java. Который может использоваться внутри метода или конструктора класса. Он (это) работает как ссылка на текущий объект, метод которого или конструктор вызывается. это ключевое слово может использоваться для ссылки на любого члена текущего объекта из метода экземпляра или конструктора.
Проверьте примеры в ссылке для четкого понимания
Ответ 16
В Java «this» есть предопределенная переменная. Если мы используем «this» в методе, который означает, что мы получаем ссылку (адрес) текущего текущего объекта. Например.