[Java/객체지향] 생성자, 생성자의 조건, 참조변수 this
2024. 8. 20. 20:18ㆍ프로그래밍 언어/Java
생성자
- 인스턴스가 생성될 때 마다 호출되는 ‘인스턴스 초기화 메서드’ = 객체 초기화 = iv(묶음) 초기화
- 인스턴스 생성 시 수행할 작업(iv 초기화 등)에 사용
- 초기화란?
- 생성자 왜 만들어? iv 초기화를 편리하게 하려고!
생성자의 조건
- 생성자의 이름 = 클래스의 이름
- 생성자는 리턴값이 없음 (void 안 붙임)
- 모든 클래스는 생성자를 가져야한다.
기본생성자
- 매개변수가 없는 생성자
- 생성자가 하나도 없을 때만, 컴파일러가 자동 추가
- 클래스이름( ) { }
매개변수가 있는 생성자
class Car{
String ccolor;
String gearType;
int door;
Car() {} //기본 생성자 -> 매개변수가 없는 생성자
Car(String c, String g, int d){//매개변수가 있는 생성자
color = c;
gearType = g;
door = d;
}
}
- 설계자가 한 번만 잘 작성해 두면, 사용자 측에서 편리하게 여러 번 사용 가능
생성자 this()
- 같은 클래스에 있는 생성자에서 다른 생성자를 호출할 때 사용
- 생성자의 이름을 클래스이름 대신 this를 사용한다.
- 한 생성자에서 다른 생성자를 호출할 때는 반드시 첫 줄에서만 호출이 가능하다.
Class car{
String color;
String gearType;
int door;
Car2(){
this("white","auto", 4)//(1) -> (3)호출
}
Car2(String color){
this(color, "auto", 4);//(2) -> (3)호출
}
Car2{String color, String gearType, int door){//(3)
this.color = color;
this.gearType = gearType;
this.door = door;
}
- 생성자들은 iv초기화라는 같은 작업을 수행하기 때문에, 코드의 중복을 제거하기 위해, 서로를 호출하는 경우가 많음
참조변수 this
- 인스턴스(객체)자신을 가리키는 참조변수
- 인스턴스 메서드(생성자 포함)에서만 사용가능
- 지역변수(lv)와 인스턴스변수(iv)를 구별할 때 사용
Car(String c, String g, int d**){
color = c;
gearType = g;
door = d;
}
Car(String color, String gearType, int door){
this.color = color;
this.gearType = gearType;
this.door = door;
}
- 여기서는 lv와 iv의 이름이 달라 구분 가능(같은 클래스 내라 this생략된 상태)
- but, 대부분은 lv와 iv의 이름이 같아 구별 불가능 → this 기재 필요
iv의 진짜이름
- long a,b → this . a , this . b
- 원래 this가 있는데 우리가 귀찮아서 생략하는 것 뿐
- but, 클래스 메서드는 iv사용하지 않기 때문에, this도 사용 안 함
- (1)생성자, (2)인스턴스메서드에서만 사용
this
- 객체 자신을 가리키는 참조변수, 인스턴스의 주소가 저장되어있음
- 모든 인스턴스메서드에 지역변수로 숨겨진 채로 존재함 = 따로 선언 안 해도 사용 가능
this( )
- 생성자, 같은 클래스의 다른 생성자 호출 시 사용
'프로그래밍 언어 > Java' 카테고리의 다른 글
[Java/객체지향] 클래스의 관계 - 상속/포함관계/단일상속/Object클래스 (0) | 2024.08.21 |
---|---|
[Java/객체지향] 오버로딩과 오버라이딩 (0) | 2024.08.19 |
[Java/객체지향] static 메서드와 인스턴스메서드 (0) | 2024.08.18 |
[Java/객체지향] 매개변수 (0) | 2024.08.18 |
[Java/객체지향] 메서드 (0) | 2024.08.17 |