Java this best practices

10 Example of this keyword in Java

this keyword in Java is a special keyword that can be used to represent the current object or instance of any class in Java . “this” keyword can also call the constructor of the same class in Java and is used to call overloaded constructor . In this Java tutorial, we will see how to use this keyword in Java and different examples of this in Java. this sometimes also associates with a super keyword which is used to denote an instance of the superclass in Java and can be used to call an overloaded constructor in Java.

this keyword in Java

Here are a few important points related to using this keyword in Java.

3) this keyword can be used to call an overloaded constructors in java . if used then it must be the first statement in constructor this() will call the no-argument constructor and this(parameter) will call one argument constructor with the appropriate parameter. here is an example of using this() for constructor chaining:

Читайте также:  Html input in multiple forms

4) If member variable and local variable name conflict then this can be used to refer to the member variable.

Here local variable interest and member variable interest conflict which is easily resolved by referring member variable as this.interest

5) this is a final variable in Java and you can not assign value to this. this will result in a compilation error:

7) this can be used to return object. this is a valid return value. her e is an example of using as return value.

8) this can be used to refer static members in Java as well but its discouraged and as per best practices

9) «this» keyword can not be used in static context i.e. inside static methods or static initializer block .

10) this can also be passed as method parameters since it represents the current object of the class.

That’s all on this keyword in Java. You should know about this and super keyword and get yourself familiar with different usage of this keyword in java.

6 comments :

@Anonymous, Thanks for your comment and liking this Java tutorial.

What are the Java best practices related to this keyword? I heard that, it’s better to use this keyword to display instance operation rather than not using it? but doesn’t it clutter code. Any way eager to learn some best practices in Java.

thanks for sharing such subtle details of Java. I was wondering difference between this() and super() from long time, until I realize that they call to constructor from same class and super class. but it’s not uncommon to see different variant e.g. this(1), super(1) etc, what does that mean?

very good examples! thank you

and used in nested classes
this.OuterClass.member

Источник

Understanding «this» vs «super» Keywords in Java: Best Practices and Tips

Learn the difference between «this» and «super» keywords in Java, and understand when to use them. Improve code readability and avoid common issues with our best practices and tips.

  • “this” and “super” Keywords in Java
  • “super()” Constructor in Java
  • What is the difference between this() and super()
  • Invoking Methods with “this” and “super” Keywords in Java
  • Differences Between “super” and “this” Keywords in Java
  • Advantages and Disadvantages of Using “super” and “this” Keywords in Java
  • Other code examples for «this» vs «super» in Java
  • Conclusion
  • What is the difference between this and super in Java?
  • Should I use super or this?
  • What is this () and super ()?
  • Is super and this the same?

Java is one of the most popular programming languages in the world. It is an object-oriented language that makes use of keywords such as “this” and “super” to refer to objects and classes. Understanding the difference between these two keywords is crucial for developers who want to write clean and efficient code. In this article, we will discuss “this” vs “super” keywords in Java and provide best practices and tips for using them.

“this” and “super” Keywords in Java

The “this” keyword in Java refers to the current object or instance of a class. It is used to access methods and instance variables of the current class. On the other hand, the “super” keyword in Java refers to the parent class object. It is used to access methods and instance variables of the parent class.

To understand this better, let’s take an example. Suppose we have a class named “Person” that has two instance variables — “name” and “age”. Now, let’s create a subclass named “Employee” that extends the “Person” class. The “Employee” class also has an instance variable named “salary”.

class Person < String name; int age; public Person(String name, int age) < this.name = name; this.age = age; >>class Employee extends Person < double salary; public Employee(String name, int age, double salary) < super(name, age); this.salary = salary; >> 

In the above example, we have used “this” keyword to access the instance variables of the “Person” class and “super” keyword to call the constructor of the “Person” class.

“super()” Constructor in Java

The “super()” constructor in Java is used to call the constructor of the parent class. It is used when we want to initialize the instance variables of the parent class. On the other hand, “this()” constructor is used to call the constructor of the current class.

Let’s take an example to understand this better. Suppose we have a class named “Animal” that has an instance variable named “name”. Now, let’s create a subclass named “Dog” that extends the “Animal” class. The “Dog” class also has an instance variable named “breed”.

class Animal < String name; public Animal(String name) < this.name = name; >>class Dog extends Animal < String breed; public Dog(String name, String breed) < super(name); this.breed = breed; >> 

In the above example, we have used “super()” keyword to call the constructor of the “Animal” class.

What is the difference between this() and super()

What is the difference between this() and super() | Core Java FAQs Videos | Naresh IT** For Duration: 4:52

Invoking Methods with “this” and “super” Keywords in Java

In Java, “super” keyword can be used to invoke methods from the parent class, while “this” keyword can be used to invoke methods from the current class.

Let’s take an example to understand this better. Suppose we have a class named “Vehicle” that has a method named “start()”. Now, let’s create a subclass named “Car” that extends the “Vehicle” class. The “Car” class also has a method named “start()”.

class Vehicle < public void start() < System.out.println("Vehicle started."); >>class Car extends Vehicle < public void start() < super.start(); System.out.println("Car started."); >> 

In the above example, we have used “super” keyword to invoke the “start()” method of the parent class and “this” keyword to invoke the “start()” method of the current class.

Differences Between “super” and “this” Keywords in Java

There are several differences between “super” and “this” keywords in Java. Firstly, “super” is a reference variable, while “this” is a reserved keyword in Java. Secondly, “super” can be used anywhere in a Java class except in static areas, while “this” can only be used within the scope of an instance method or constructor. Lastly, “super()” and “this()” are not the same as “super” and “this” keywords in Java.

Advantages and Disadvantages of Using “super” and “this” Keywords in Java

There are several advantages of using “super” and “this” keywords in Java. Firstly, it improves code readability and reduces ambiguity. Secondly, it helps in avoiding naming conflicts between instance variables and parameters.

However, there are also some disadvantages of using “super” and “this” keywords in Java. Firstly, it increases code complexity and potential for errors. Secondly, it can make the code harder to understand for beginners.

To use “super” and “this” keywords effectively in Java, it is important to follow naming conventions and use them only when necessary. Best practices for using “super” and “this” keywords in Java include keeping the code simple and easy to understand.

Other code examples for «this» vs «super» in Java

In Python as proof, difference between this and super code sample

this() is used to access one constructor from another with in the same class while super() is used to access superclass constructor. Either this() or super() exists it must be the first statement in the constructor.

Conclusion

In conclusion, understanding the difference between “this” and “super” keywords in Java is important for writing efficient and clean code. Proper usage of “this” and “super” keywords in Java can improve code readability and reduce ambiguity. Best practices and tips for using “this” and “super” keywords in Java can help developers avoid common issues and errors.

Источник

Кофе-брейк #236. Ключевое слово this в Java: способы и примеры использования

Java-университет

Кофе-брейк #236. Ключевое слово this в Java: способы и примеры использования - 1

Источник: Medium Благодаря этому руководству вы узнаете о предназначении ключевого слова this в Java, как и где его использовать на основе практических примеров. В Java ключевое слово this используется для ссылки на текущий объект внутри метода или конструктора. Например:

 class Main < int instVar; Main(int instVar)< this.instVar = instVar; System.out.println("this reference = " + this); >public static void main(String[] args) < Main obj = new Main(8); System.out.println("object reference terminal">this reference = Main@23fc625e object reference = Main@23fc625e
В приведенном выше примере мы создали объект с именем obj класса Main. Затем мы печатаем ссылку на объект obj и ключевое слово this класса. Как мы видим, ссылка на obj и на this одинаковая. Это означает, что this является ссылкой на текущий объект.

Использование ключевого слова this

Существуют несколько ситуаций, в которых используется ключевое слово this.

1. Использование this для различия наименований переменных

В Java не разрешается объявлять две или более переменных с одинаковым именем внутри области видимости (области действия класса или области действия метода). Однако переменные и параметры экземпляра могут иметь одно и то же имя. Вот пример:
 class MyClass < // переменная экземпляра int age; // параметр MyClass(int age)< age = age; >> 

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

 class Main < int age; Main(int age)< age = age; >public static void main(String[] args) < Main obj = new Main(8); System.out.println("obj.age terminal">obj.age = 0
В приведенном выше примере мы передали конструктору значение 8. Тем не менее, на выходе мы получаем 0. Это связано с тем, что компилятор Java запутался из-за неоднозначности имен между экземпляром переменной и параметром. Теперь давайте перепишем этот код, используя ключевое слово this.
 class Main < int age; Main(int age)< this.age = age; >public static void main(String[] args) < Main obj = new Main(8); System.out.println("obj.age terminal">obj.age = 8
Теперь мы получили вполне ожидаемый результат. Это связано с тем, что при вызове конструктора this внутри него заменяется объектом obj, который вызывает конструктор. Следовательно, переменной age присваивается значение 8. Кроме того, если имя параметра и переменной экземпляра различаются, компилятор автоматически добавляет ключевое слово this. Перед вами пример кода:
 class Main < int age; Main(int i) < age = i; >> 

2. Ключевое слово this с геттерами и сеттерами

Еще одно распространенное использование ключевого слова this — в методах классов setter и getter . Например:

 class Main < String name; // метод setter void setName( String name ) < this.name = name; >// метод getter String getName() < return this.name; >public static void main( String[] args ) < Main obj = new Main(); // вызов метода setter и getter obj.setName("Toshiba"); System.out.println("obj.name: "+obj.getName()); >> 
  • чтобы присвоить значение внутри метода setter
  • для доступа к значению внутри метода getter

3. Использование this в перегрузке конструктора

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

 class Complex < private int a, b; // конструктор с двумя параметрами private Complex( int i, int j )< this.a = i; this.b = j; >// конструктор с одним параметром private Complex(int i) < // вызывает конструктор с двумя параметрами this(i, i); >// конструктор без параметров private Complex() < // вызывает конструктор с одним параметром this(0); >@Override public String toString() < return this.a + " + " + this.b + "i"; >public static void main( String[] args ) < // создание объекта класса Complex // вызов конструктора с двумя параметрами Complex c1 = new Complex(2, 3); // вызывает конструктор с одним параметром Complex c2 = new Complex(3); // вызывает конструктор без параметров Complex c3 = new Complex(); // выводим объекты System.out.println(c1); System.out.println(c2); System.out.println(c3); >> 
  • вызова конструктора Complex(int i, int j) из конструктора Complex(int i)
  • вызова конструктора Complex(int i) из конструктора Complex()

Здесь, когда мы печатаем объект c1 , то объект преобразуется в строку. В этом процессе вызывается toString() . Поскольку мы переопределяем метод toString() внутри нашего класса, то мы получаем вывод в соответствии с этим методом. Одним из огромных преимуществ this() является уменьшение количества дублирующегося кода. Тем не менее, мы всегда должны быть осторожны, если решаем использовать this() . Это связано с тем, что вызов конструктора из другого конструктора добавляет сложность и сам по себе является довольно медленным процессом. Примечание. Вызов одного конструктора из другого конструктора называется явным вызовом конструктора.

4. Передача this в качестве аргумента

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

 class ThisExample < // объявление переменных int x; int y; ThisExample(int x, int y) < // присваиваем значения переменных внутри конструктора this.x = x; this.y = y; // значение x и y перед вызовом add() System.out.println("Before passing this to addTwo() method:"); System.out.println("x = " + this.x + ", y = " + this.y); // вызываем метод add(), передав this в качестве аргумента add(this); // значение x и y после вызова add() System.out.println("After passing this to addTwo() method:"); System.out.println("x = " + this.x + ", y terminal">Перед передачей this методу addTwo(): x = 1, y = -2 После передачи this методу addTwo(): x = 3, y = 0
В этом примере обратите внимание на строку внутри конструктора ThisExample():
 add(this); 

В ней мы вызываем метод add() , передавая this в качестве аргумента. Поскольку это ключевое слово содержит ссылку на объект класса obj , мы можем изменить значение x и y внутри метода add() .

Источник

Оцените статью