🎯 목표 : this의 쓰임과 사용 방법의 이해
📒 생성자 this() 와 참조변수 this
👉 생성자 this() 예제
📌 자기 자신 또는 다른 생성자를 호출할떄 사용
📌 다른 생성자를 호출할때 첫줄에서만 호출 가능
class Animal {
String cow;
String birds;
String pisces;
Animal() { // 기본 생성자
//기본 생성자의 디폴드 값을 지정해줌
mam = "Cow";
birds = "Sparrow";
Pisces = "shark";
} // 아래 생성자와 중복코드며 this()를 사용하여 간결하게 작성할수 있다.
Animal(String a, String b, String c) { // 생성자 1
cow = a;
birds = b;
pisces = c;
}
}
public class thisStudy {
public static void main(String[] args) {
}
}
- 기본 생성자와 생성자1이 있다.
- 기본 생성자는 매개변수 값을 지정하고 있지만 생성자1은 객체 생성시 매개변수 값을 받아서 인스턴스 변수에 입력하고 있다.
- 두 생성자는 형태가 비슷하여 코드가 중복되므로 코드를 간결하게 개선이 필요하다.
- 기본생성자를 개선 할때 디폴드 값을 원하는 값으로 넣기 위해서는 생성자1을 호출 하여야 된다
class Animal {
String cow;
String birds;
String pisces;
Animal(){ // 기본생성자
// 기본생성자의 defualt 값, 제일 첫줄에만 사용해야한다
this("Cow","Sparrow","shark");
// this는 아래 생성자1을 가르킴
// 같은 클래스의 다른 생성자를 호출할 때 사용한다
}
Animal(String a, String b, String c) { // 생성자 1
cow = a;
birds = b;
pisces = c;
}
}
public class thisStudy {
public static void main(String[] args) {
}
}
- 기본생성자의 this는 생성자1을 가르키고 있으며, 같은 기능을 하고 있으므로 출력값은 동일하다.
- this( ) 형태는 다른 생성자를 호출하는 의미로 구현된다.
👉 참조변수 this 예제
📌 참조변수의 역할로서 자기 자신 또는 속해있는 소속관계를 확인할수 있다.
class Animal2 { // 참조변수 this
String cow; // 진짜 이름 this.cow
String birds;// this.birds
String pisces; // this.pisces
Animal2(String cow, String birds, String pisces){
// this는 Animal2 클래스를 가르키고있음
this.cow = cow; // == Animal2 클래스의 cow와 생성자의 매개변수 cow의 값이 같도록 정의.
this.birds = birds;
this.pisces = pisces;
// 매개변수와 인스턴스 변수 이름이 다를때는 this 생략 가능
}
}
public class thisVarStudy {
public static void main(String[] args) {
}
}
- 생성자 Animal2의 매개변수 이름과 인스턴스 변수의 이름이 같고, 생성자 내에서 인스턴스 변수 값을 지정할 경우 변수 별로 소속 관계를 확실히 표현하기 위해 활용한다.
- 이때 this. 사용하여 생성자에 사용되는 변수들의 소속(Animal2클래스의 인스턴스 멤버 소속)을 확인할수 있다.
- 즉 , this.은 참조변수로서의 기능을 하고 있다.
'Language > JAVA' 카테고리의 다른 글
Java Class의 Inheritance(상속) / Composite(포함) - OOP_상속 (0) | 2022.08.20 |
---|---|
Java Initialized(초기화) (0) | 2022.08.20 |
Java 생성자(Constructor)- OOP (0) | 2022.08.20 |
Java 기본형 / 참조형 매개변수 (0) | 2022.08.20 |
Java Overloading(오버로딩) - OOP (0) | 2022.08.19 |