반응형
생성자의 기본
생성자는 인스턴스 생성시 호출되는 '인스턴스 초기화 메서드'
- 생성자의 이름은 클래스 이름과 같아야한다.
- 생성자는 리턴값이 없다.
* 생성자는 단지 인스턴스를 초기화하는 메서드일 뿐이다. 오해금지.
ex) Card c = new Card();
- 연산자 new에 의해서 메모리(heap)에 Card클래스의 인스턴스가 생성된다.
- 생성자 Card()가 호출되어 수행된다.
- 연산자 new의 결과로, 생성된 Card인스턴스의 주소가 변환되어 참조변수 c에 저장된다.
또한. 생성자에서 다른 생성자를 호출할때 - this(), this를 사용한다. this()와 this는 이름만같을뿐 전혀다른 개념이니 유의하자.
같은 클래스의 멤버들 간에 서로 호출할 수 있는 것처럼 생성자 간에도 서로 호출이 가능하다.
단, 다음의 두 조건을 만족시켜야한다.
- 생성자의 이름으로 클래스이름 대신 this사용
- 한 생성자에서 다른 생성자를 호출할 때 반드시 첫 줄에서만 호출이 가능하다.
Car(String color){
door=5;
Car(color, "auto", 4);
}
이와같은 방식이 오류이다 첫줄이 아니기 때문에.
class Car{
String color; // 색상
String gearType; // 변속기 종류 - auto (자동), manual (수동)
int door;
// 보통 이런식으로 변수를 작성하지만 정보의 은닉을 위해서는 이렇게 하는 것 보다는.
public class car{
private String color;
private String gearType;
private int door;
// 위와 같이 private로 변수를 은닉시켜 보안을 강화할 수 있다.
- 아래와 같이 생성자의 매개변수로 인스턴스 변수들의 초기값을 제공받는 경우가 많기 때문에 매개변수와 인스턴수변수의 이름이 일치하는 경우가 자주 있다 그렇기 때문에 이럴때는 매개변수 이름을 다르게 하는 것 보다 'this'를 사용해서 구별되도록 하는 것이 의미가 더 명확하다.
- 'this'는 참조변수로 인스턴스 자신을 가리킨다. 참조변수를 통해 인스턴스의 멤버에 접근할 수 있는 것처럼 'this'로 인스턴스변수에 접근할 수 있는 것이다.
- 단! this를 사용할 수 있는것은 인스턴스멤버 뿐이다. static 메서드(클래스 메서드)에서는 인스턴스 멤버들을 사용할 수 없는 것처럼 this역시 사용할 수 없다.
- 왜? static메서드는 인스턴스를 생성하지 않고도 호출될 수 있으므로 static메서드가 호출된 시점에 인스턴스가 존재하지 않을 수 있기 때문이다.
public void car (String color, String gearType, int door) {
this.color = color;
- 그리고 위처럼 private로 구성을 하려면 getter setter를 가져와야하는데 빈공간에서 마우스 오른쪽 버튼을 누르고 source를 누르면 선택하여 필요한것을 가져올 수 있다.
반응형
'언어 공부 > JAVA' 카테고리의 다른 글
Java의 5대 핵심 개념과 예시로 알아보는 자바 프로그래밍 (0) | 2023.11.24 |
---|---|
JAVA/innerClass (0) | 2022.05.17 |
JAVA/DTO test code (0) | 2022.05.15 |
JAVA/상속관계, 포함관계 (0) | 2022.05.15 |
JAVA/CLASS (0) | 2022.05.11 |
최근댓글