Рубрики
Без рубрики

Освоение ключевого слова “это” в Java.

В основном мы используем это ключевое слово как ссылку на текущий объект в методе или конструкторе. В simp… С тегами java, веб-разработчик, codenewbie.

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

class Example{
int a;
Example(int a){
this.a=a;           
}
public static void main(String args[]){
Example obj=new Example("John Doe");
}
}

Но есть много других случаев, когда мы можем эффективно использовать это ключевое слово. Давайте рассмотрим их сейчас. 🤩

1. Используйте это ключевое слово, чтобы устранить путаницу между переменными класса и экземпляра.

Если переменная, объявленная в классе, и метод/конструктор имеют одно и то же имя, мы используем это ключевое слово для ссылки на экземпляр класса.

Объяснение: Как вы можете видеть в приведенном ниже коде, мы объявили 2 глобальные переменные как место и pin-код , те же имена переменных используются и для параметров конструктора. Итак, мы используем это , чтобы сообщить программе, что аргументы, которые мы передаем для переменных конструктора, также относятся и к глобальным переменным. Поэтому, когда мы пытаемся напечатать pin-код и поместить его в meth() , он печатает значения, которые мы передали во время создания объекта.

public class Example{
    String place;
    int pin;
    One(String place,int pin){
     this.pin=pin;                  
    this.place=place;
    }
     void meth(){
      System.out.println(place+" "+pin);
    }
    public static void main(String args[]){
      Example obj=new Example("chennai",603103);                                          
       obj.meth();
    }
}

Output: chennai 603103

2. это ключевое слово используется для вызова других конструкторов того же класса.

Здесь мы используем это для вызова параметризованного конструктора внутри конструктора по умолчанию.

public class Example {
    Two(int a,int b){
    System.out.println("Parameterized Constructor");  
    }
    Two(){
        this(25,32);  
    System.out.println("Default Constructor");    
    }
    public static void main(String args[]){
    Example obj= new Example();   
    }
    }
Output:   Parameterized Constructor
          Default Constructor

3. Цепочка конструкторов

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

Пояснение: Чтобы четко понять, я прокомментировал конструкторы с числами в приведенном ниже коде. Теперь, когда объект создан, вызывается конструктор-1, который приводит к конструктору-2, как мы использовали это() для вызова, и, следовательно, конструктор-2 использует это() для вызова конструктора-3. Следовательно, порядок выполнения будет следующим: конструктор 3,2 и 1.

public class Example {
 /*1*/ Example(){
        this(10,"laasya");
        System.out.println("Constructor 1");
        }
 /*2*/ Example(int a,String s){
        this(10);
        System.out.println("Constructor 2");
    }
/*3*/ Example(int a){
        System.out.println("Constructor 3");
    }
     public static void main(String args[]){
        new Example();
    }
}
Output: Constructor 3
        Constructor 2
        Constructor 1

4. Используя это для вызова текущего метода класса.

Пояснение: Здесь мы используем это для вызова одного метода из другого. Вместо того, чтобы писать this.check() мы можем просто использовать check() , который работает совершенно нормально. Но рекомендуется использовать это , так как это обеспечивает читаемость кода в долгосрочной перспективе.

public class Example{
    void check(){
     System.out.println("This method is called from another method");
    }
    void checkTwo(){
        check();
    System.out.println("I called another method");      
    }
    public static void main(String args[]){
    Example obj=new Example();
    obj.checkTwo();
    }
}
output: This method is called from another method
        I called another method

5. Передача этого ключевого слова в качестве аргумента метода

Пояснение: В приведенном ниже примере мы объявили метод один() , который имеет объект класса в качестве параметра. Итак, при вызове метода One() мы можем передать это в качестве аргумента, который выводит значение ‘a’, которое было передано конструктору во время создания объекта.

public class Example {
int a;
Example(int b){
a=b;
}
void methodOne(Example object){
 System.out.println("I was called by using this keyword as arg "+a);
    }
void methodTwo(){
   methodOne(this);
    }
    public static void main(String args[]){
     Example obj= new Example(20);
     obj.methodTwo();
    }
}
Output: I was called by using this keyword as arg 20

6. Используйте это ключевое слово для возврата текущего объекта класса.

Пояснение: В приведенном ниже коде, когда вызывается метод meth() , который определяется именем класса, он возвращает текущий экземпляр класса. Помните, что meth() возвращает, но не печатает. Итак, для печати значений мы используем display() .

public class Example {
   int age;
   Example(){
     age =20;
   }
    Example meth(){
        return this;
    }
    void display(){
       System.out.println(age);
    }
    public static void main(String args[]){
Example obj=new Example();
obj.meth().display();
    }
}
Output: 20

7. Использование этого ключевого слова в качестве аргумента конструктора

Пояснение: В приведенном ниже примере у нас есть 2 класса A и T. Когда создается новый объект A, конструктор A по умолчанию создает новый объект класса T, передавая это в качестве аргумента. Теперь конструктор по умолчанию T хранит сведения об объекте A в объекте T, как мы это делали this.obj=obj . Следовательно, когда мы вызываем “display()”, он получает значение переменной, созданной в классе A, и печатает ее.

 public class A{
     int age=10;
     A(){
         T t=new T(this);
         t.display();
     }
     class T {
      A obj;
       T(A obj){
         this.obj=obj;
       }
       void display(){
           System.out.println(obj.age);
       }
   }
     public static void main(String args[]){
      new A();
    }

 }
Output: 10

Вот и все”. Вы дошли до конца статьи. Счастливые яванские люди 🤗

Спасибо, что дочитали до конца. Я бы с удовольствием связался с вами через Твиттер , LinkedIn , Github . 😍

Оригинал: “https://dev.to/laasyasetty/mastering-this-keyword-in-java-4jao”