-
[자바기초] 클래스와 객체 | this가 하는 일º Language º/Java 2023. 3. 1. 17:46
# this가 하는 일이 뭐야?
1. 인스턴스 내에 자기 자신의 메모리를 가리키는 기능을 해
2. 생성자에서 다른 생성자를 호출해
3. 자신의 주소를 반환해
* 자세히 알아볼까?
1. 인스턴스 내 자신의 메모리를 가리키는 this
- 클래스에 생성된 인스턴스(instance) 스스로를 가리키는 예약어
* 인스턴스란?
- 인스턴스(instance)는 하나의 클래스에서 생성된 객체
- 즉 클래스가 구체화되어, 클래스에서 정의된 속성과 성질을 가진 실제적인 객체로 표현된 것을 의미
- 이때 추상적인 개념인 클래스에서 실제 객체를 생성하는 것을 인스턴스화(instantiation)라고 한다.
인스턴스 예시 public Person(String name, int age) {
this.name = name;
this.age = age;
}> 위와 같은 경우 this. 를 생략하게 되면 name 이나 age 가 파라미터(매개변수)로 사용되는 name과 age로 인식된다.
* 파라미터(매개변수)란?
- 파라미터(매개변수)란 메소드 수행에 필요한 입력값을 저장하는 변수
- 예를 들어, 전화를 거는 메소드를 만들 때 우리는 전화를 걸 대상에 대한 입력값이 필요한데 이러한 입력값을 기억해두는 변수가 바로 파라미터(매개변수)
- 이러한 파라미터(매개변수)는 메소드의 구조상에서 소괄호 사이에 위치한다.
파라미터 예시 2. 생성자에서 다른 생성자를 호출하는 this
- 생성자가 또 다른 생성자를 호출하고 싶을 때 this를 사용할 수 있음
* 생성자가 하는 일은?
객체가 생성될 때 초기화 작업을 함 (대체로 멤버변수를 값에 세팅) / 생성자는 1개 이상일 수 있음 = 오버로드(overload)
코드 예시
public Person() {
name = "test"
this ("이름없음",1);
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}> this.를 이용하여 다른 생성자를 호출할 때는 이전에 어떠한 statement(명령어)도 사용할 수 없다. (
name = "test")그러므로 this. 가 가장 먼저 쓰여져야 한다. ( 호출할 생성자 인스턴스가 먼저 생성 되지 않아 this.이전 명령은 불가)
* 위와 같이 생성자가 여러 개이고 파라미터만 다른 경우 constructor overloading(생성자 오버로딩) 이라고 한다.
3. 자신의 주소를 반환하는 this
- 자신의 주소(참조값)를 반환하는 기능을 가짐
코드 예시
class Person {
public Person returnSelf() {
return this;
}
}public static void main(String[] args) {
System.out.println(p1.returnSelf());
}> Person 메서드에서 반환값을 this. 로 출력한 값을 선언했을 때 출력되는 값은 인스턴스 주소 값이다.
완성
출력값
* 코드에서는 모두 this. 라고 쓰여있지만, 서로 다른 인스턴스(instence) 마다 값이 달라질 수 있다는 것을 유의하자.
'º Language º > Java' 카테고리의 다른 글
[자바기초] 배열 | 배열선언, 초기화, 문자배열 (0) 2023.03.06 [자바기초] 클래스와 객체 | static 변수와 메서드 (0) 2023.03.04 [자바기초] PART2 구구단 값 입력 및 변수 (0) 2022.08.17 [자바기초] PRAT1 프로그래밍 시작 및 개발환경 구축 (Github토큰 생성하는 법) (0) 2022.08.02 [자바기초] PRAT1 프로그래밍 시작 및 개발환경 구축 (Eclipse와 Github 연동하기) (0) 2022.08.02