Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- aws 자격증
- 파이썬
- 네트워크
- 유선LAN
- java
- 계층화
- 파이썬 1712
- 인프콘
- 데이터 송수신
- 자바
- 역캡슐화
- 인터페이스
- TCP/IP
- 백준 2775
- 물리구성도
- l3 스위치
- 자바의 정석
- 백준 1712
- network
- 다형성
- modifiers
- 상속
- 프로토콜
- 논리구성도
- 남궁성
- 1764
- 테슬라폰
- 개발바닥
- AWS CLF
- 10866
Archives
- Today
- Total
병훈's Blog
[Java] this 본문
- 참고: Java의 정석
참조변수 this
코드를 먼저 볼게요.
class Car {
String color; // 색상
String gearType; // 변속기 종류 - auto(자동), manual(수동)
int door; // 문의 개수
Car() {
this("white", "auto", 4); // 여기 this가 쓰였어요.
}
Car(Car c) { // 인스턴스의 복사를 위한 생성자.
color = c.color;
gearType = c.gearType;
door = c.door;
}
Car(String color, String gearType, int door) {
this.color = color; // 여기도 this가 쓰였어요.
this.gearType = gearType;
this.door = door;
}
}
class CarTest3 {
public static void main(String[] args) {
Car c1 = new Car();
Car c2 = new Car(c1); // c1의 복사본 c2를 생성한다.
System.out.println("c1의 color=" + c1.color + ", gearType=" + c1.gearType+ ", door="+c1.door);
System.out.println("c2의 color=" + c2.color + ", gearType=" + c2.gearType+ ", door="+c2.door);
c1.door=100; // c1의 인스턴스변수 door의 값을 변경한다.
System.out.println("c1.door=100; 수행 후");
System.out.println("c1의 color=" + c1.color + ", gearType=" + c1.gearType+ ", door="+c1.door);
System.out.println("c2의 color=" + c2.color + ", gearType=" + c2.gearType+ ", door="+c2.door);
}
}
자 이 중에서 두 개만 볼게요.
/** this가 생성자로 쓰인 경우 **/
Car() {
this("white", "auto", 4); // 여기 this가 쓰였어요.
//Car("white", "auto", 4); 와 동일하다
}
/** 변수에 this가 쓰인 경우 **/
Car(String color, String gearType, int door) {
this.color = color; // 여기도 this가 쓰였어요.
this.gearType = gearType;
this.door = door;
}
- this가 생성자로 쓰인 경우
{ } 안에this("white", "auto", 4);
는 Car클래스 안에 있는Car("white", "auto", 4);
생성자를 호출하는 것과 같아요.
"같은 클래스의 생성자" 임을 직관적으로 보여주죠. - 변수에 this가 쓰인 경우
Car(String color, String gearType, int door) {}
생성자를 보면,
좌변에는 this.color, 우변에는 color가 있죠?
매개변수로 받은 지역변수 color를
멤버변수(지역변수) color에 저장시키면서
인스턴스를 생성하는 코드죠. - 좌변의 color는 "Car 클래스의 멤버로 선언된 인스턴스 변수(전역변수)" 고
우변의 color는 매개변수로 들어온 지역변수에요.
간단하게 말해서 this는 의미 그대로
변수에 쓰이면 "이 클래스의 전역변수"
생성자에 쓰이면 "이 클래스의 생성자"
라는 의미로 쓰입니다!!
728x90
728x90
'Java' 카테고리의 다른 글
[Java] 상속 (Inheritance) (0) | 2022.09.26 |
---|---|
[Java] 초기화 (initialized) (0) | 2022.09.25 |
[Java] 생성자 (Constructor) (0) | 2022.09.25 |
[Java] 메소드 오버로딩 (Method Overloading) (0) | 2022.09.25 |
[Java] 변수와 메소드 / JVM (0) | 2022.09.25 |