이 키워드
5535 단어 javathisoopprogramming
자막 추가
자바에서 이 키워드 [#3]
쓰다
시사
가이드
요약
이전 기사에서는 객체 지향 프로그래밍이 무엇인지, 객체, 클래스 및 각 생성자, 클래스 멤버에 액세스하는 방법에 대해 논의했습니다.
또한 이전 두 기사에서 이러한 개념의 예를 보았습니다.
오늘은 자바에서 "this"키워드가 왜 유용한지 살펴보겠습니다.
이 키워드
Java에서 이 키워드는 메서드 또는 생성자 내부의 현재 개체를 참조하는 데 사용됩니다.
class Animal {
int instanceVariable;
Animal(int instanceVariable) {
this.instanceVariable = instVariable;
System.out.println("the this reference =" + this);
}
public static void main(String[] args) {
Animal age = new Animal(7);
System.out.println("the object reference =" + age);
}
}
산출:
the this reference = Animal@78gd345f
the object reference = Animal@78gd345f
위의 이 예에서는 우리가 생성한 개체의 이름을 Animal 클래스의 age로 지정하고 일단 개체에 대한 참조와 클래스의 this 키워드를 인쇄합니다.
여기에서 우리는 age와 this의 참조가 동일한 의미임을 알 수 있습니다. this는 현재 개체에 대한 참조일 뿐입니다.
this 키워드의 사용
1. 모호한 변수 이름
자바뿐만 아니라 다른 프로그래밍 언어에서도 클래스나 메서드라는 범위 내에서 같은 이름을 가진 변수를 둘 이상 선언하는 것은 허용되지 않는다. 그러나 인스턴스 변수와 매개변수는 "this"키워드를 사용하지 않고 동일한 이름을 가질 수 있습니다.
class Exam {
// instance variable
int tm;
// parameter
Exam(int tm){
tm = tm;
}
public static void main(String[] args) {
Exam examOne = new Exam(3);
System.out.println("examOne.tm = " examOne.tm);
}
}
산출:
examOne.tm = 0
위의 이 예에서 생성자에 3을 전달했지만 출력으로 0을 얻었습니다. 인스턴스 변수와 매개 변수 사이의 이름이 모호하기 때문에 Java 컴파일러가 혼동을 일으키기 때문입니다.
위의 코드를 this 키워드로 다시 작성합니다.
class Exam {
int tm;
Exam(int tm){
this.tm = tm;
}
public static void main(String[] args) {
Exam oj = new Exam(3);
System.out.println("oj.tm = " + oj.tm);
}
}
산출:
oj.tm = 3
위의 경우 예상 출력을 얻고 있습니다. 이는 생성자가 호출되면 생성자 내부의 this가 생성자를 호출한 객체 oj로 대체되기 때문입니다. 따라서 tm 변수에는 값 3이 할당됩니다.
또한 매개변수와 인스턴스 변수의 이름이 다른 경우 컴파일러는 자동으로 this 키워드를 추가합니다. 예를 들어 아래 코드는 다음과 같습니다.
class Exam {
int size;
Exam(int p) {
size = p;
}
}
다음과 같습니다.
class Exam {
int size;
Exam(int p) {
this.size = p;
}
}
이것은 게터와 세터와 함께
이 키워드의 또 다른 일반적인 용도는 클래스의 setter 및 getters 메서드입니다. 예를 들어:
class Main {
String name;
// setter method
void setName( String name ) {
this.name = name;
}
// getter method
String getName(){
return this.name;
}
public static void main( String[] args ) {
Main obj = new Main();
// calling the setter and the getter method
obj.setName("Toshiba");
System.out.println("obj.name: "+obj.getName());
}
}
산출:
obj.name: Toshiba
여기서는 이 키워드를 사용했습니다.
this()의 큰 장점 중 하나는 중복 코드의 양을 줄이는 것입니다. 그러나 this()를 사용하는 동안 항상 주의해야 합니다.
다른 생성자에서 생성자를 호출하면 오버헤드가 추가되고 프로세스가 느려지기 때문입니다. this()를 사용하는 또 다른 큰 이점은 중복 코드의 양을 줄이는 것입니다.
참고: 다른 생성자에서 한 생성자를 호출하는 것을 명시적 생성자 호출이라고 합니다.
이것을 인수로 전달
이 키워드를 사용하여 현재 개체를 메서드의 인수로 전달할 수 있습니다. 예를 들어,
class ThisExample {
// declare variables
int x;
int y;
ThisExample(int x, int y) {
// assign values of variables inside constructor
this.x = x;
this.y = y;
// value of x and y before calling add()
System.out.println("Before passing this to addTwo() method:");
System.out.println("x = " + this.x + ", y = " + this.y);
// call the add() method passing this as argument
add(this);
// value of x and y after calling add()
System.out.println("After passing this to addTwo() method:");
System.out.println("x = " + this.x + ", y = " + this.y);
}
void add(ThisExample o){
o.x += 2;
o.y += 2;
}
}
class Main {
public static void main( String[] args ) {
ThisExample obj = new ThisExample(1, -2);
}
}
산출:
Before passing this to addTwo() method:
x = 1, y = -2
After passing this to addTwo() method:
x = 3, y = 0
위의 예에서 생성자 ThisExample() 내부에 다음 행이 있습니다.
add(this);
여기에서는 이것을 인수로 전달하여 add() 메서드를 호출합니다. 이 키워드에는 클래스의 개체 obj에 대한 참조가 포함되어 있으므로 add() 메서드 내에서 x 및 y 값을 변경할 수 있습니다.
객체 지향 프로그래밍에 대한 더 깊고 자세한 설명을 보려면 이 멋진 재생 목록을 확인하세요.
쿠날 쿠슈와하.
, github에서 저에게 연락해 주시면 감사하겠습니다.
Reference
이 문제에 관하여(이 키워드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/rukundob451/this-keyword-2a88텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)