일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 프로그래머스
- Kotlin
- 개발자 회고록
- 월간코드챌린지
- Linux
- 명령어
- toCharArray
- Java
- JavaScript
- 리눅스마스터 1급 정리
- map
- 리눅스마스터 3과목
- 문자열
- 스프링 컨테이너
- 리눅스마스터1급
- 리눅스
- java 백준 1차원 배열
- 자바스크립트 코딩의 기술
- 반복문
- GoingBus
- 카카오
- 고잉버스
- 코딩테스트
- 연습문제
- Memoir
- 자바
- 백준 java
- 스프링 빈
- 백준 javascript
- 코테
- Today
- Total
hoon's bLog
Java new instance this 생성자 본문
안녕하세요, 이번 시간에는 생성자에 대해서 알아보도록 하겠습니다.
생성자란?
- 인스턴스가 생성될 때 호출되는 인스턴스 초기화 메서드
- 인스턴스 변수의 초기화 작업에 사용
- 인스턴스 생성 시에 실행되어야 할 작업을 위해서도 사용
- 생성자의 이름은 클래스의 이름과 같아야 함
- 생성자는 리턴 값이 없음
- 연산자 new가 인스턴스를 생성하는 것이지 생성자가 인스턴스를 생성하는 것은 아님
생성자 사용법?
클래스이름(타입1 변수명1, 타입2 변수명2, ...) {
//인스턴스 생성시 수행될 코드
//주로 인스턴스 변수의 초기화 코드
}
예제를 통해 한 번 수행되는 과정을 단계별로 나눠보겠습니다.
Test t1 = new Test();
// 1. 연산자 new에 의해서 메모리(heap)에 Test클래스의 인스턴스(객체) t1 생성
// 2. 생성자 Test()가 호출되어 수행
// 3. 연산자 new의 결과로, 생성된 Test인스턴스의 주소가 반환되어 참조변수 c에 저장
이번엔 this 사용법을 위한 예제를 보기 위해 아래 코드를 보시죠
public class People{
//필드
int age;
//메소드
void setAge(int a){
age = a;
}
}
위와 같이 age에 외부의 값을 입력받을 수 있는 setAge( )라는 Setter함수를 선언하였습니다.
위에서는 메서드의 인자 변수 이름을 int a라 하였는데,
여기서 인자 값의 변수를 필드의 이름과 같이 하려면 어떻게 해야 할까요?
바로 this!!
this를 사용하면, 메서드의 인수나 변수에 필드와 같은 이름을 붙여도, 그것들을 구분하여 사용할 수 있습니다.
this는 주로 생성자와 메서드의 매개변수 이름이 필드와 동일한 경우, 인스턴스 멤버인 필드임을 명시할 때 사용됩니다.
public class People{
//필드
int age;
//메소드
void setAge(int age){
this.age = age;
}
}
위와 같이 인자 값의 변수명과 필드의 변수명이 같아도 this를 활용하면 같이 사용이 가능합니다.
위의 코드를 예로 들자면 this.age는 필드인 age를 의미합니다.
즉, this의 뒤의 변수명은 인수가 아닌 멤버 변수(필드)를 의미하는 것이 됩니다.
this는 결국 인스턴스 자신을 가리키는 참조 변수입니다.
인스턴스의 주소가 저장되어 있고, 모든 인스턴스 메서드에 지역변수로 숨겨진 채로 존재합니다!
this(), this(매개변수) 생성자, 같은 클래스의 다른 생성자를 호출할 때 사용합니다.
이전 포스팅에서 말씀드렸던 것처럼 앞으로 VO객체에 Getter / Setter를 작성하시면서,
이 this를 참 많이 보시게 될 거예요.
직접 코딩으로 해보시는 게 가장 이해가 빠르고, 정리가 잘될 겁니다.
그럼 이쯤에서 포스팅을 마무리하도록 하겠습니다.
출처 : 자바의 정석 3rd Edition 내용 정리
'IT > Java' 카테고리의 다른 글
Java String Array 배열 (0) | 2021.01.05 |
---|---|
Java Array 자바 배열 사용 및 문법 (0) | 2021.01.05 |
Java private extends abstract 캡슐화, 추상클래스 (0) | 2021.01.05 |
Java class object 클래스와 객체 객체지향프로그래밍 OOP (0) | 2021.01.05 |
Java 제어문의 조건문, 반복문 (0) | 2021.01.03 |