지난 금요일에 강의 휴강해서 오후에 일어나자마자 강의 듣고 밥 먹고 다시 강의 들었다. 시간은 많았지만 생각보다 진도가 나가지 않아 주말에 강의를 좀 많이 들어야겠다고 생각했는데... 토요일에 일어나서 강의 듣다 갑자기 서울에 갔다. 리프레시 겸 집에서 좀 맛있는 걸 먹고 싶어서 갔는데 확실하게 리프레시를 잘하고 왔다! 기운을 다시 얻어서 내일부터 다시 강의를 또 들어봐야지-
1/8 섹션4 생성자 필기
this
생성자 강의 바로 전의 강의에서 코드에 this가 있길래 궁금해서 관련 QnA를 찾아봤었는데 바로 나왔다. 내용이 어렵진 않아서 금방 이해할 수 있었지-
- this는 멤버변수 이름과 메서드 내 매개변수 이름이 같을 때 이 둘을 구분해 주기 위해 사용한다.
- this는 인스턴스 자신의 참조값을 가리키고, 무조건 멤버변수를 가리킨다.
- this가 없을 때는 가까운 지역 변수부터 확인해 본다.
멤버변수와 매개변수의 이름이 달라 this를 생략하게 되면 앞에 자동으로 this가 붙는다. 멤버변수를 빠르게 구분해 줘서 this를 무조건 붙이는 코딩 스타일이 있었다고 말씀해 주셨는데, 이게 지저분해 보일 수 있고 요즘은 IDE가 발달하여 색깔로 구분을 해주고 있기 때문에 비추천한다고 하셨다.
생성자
- 생성자의 이름은 클래스 이름과 같게 한다. 따라서 첫 글자도 대문자로 시작한다.
- 생성자는 반환 타입이 없다. 나머지는 메서드와 같다.
꿀팁 등장!
- ctrl p 파라미터에 뭐가 와야하는지 그 정보를 보여준다.
객체를 만들면서 동시에 생성자를 호출하는데,
이것은 메모리에 인스턴스를 만들고나서 바로 멤버변수에 값을 넣을 수 있다.
생성자를 호출하여 바로 초기화하면, 인스턴스를 만들고 값을 초기화하지 않는 실수를 방지할 수 있다. 생성자의 큰 장점은 객체를 생성할 때 직접 정의한 생성자가 있다면 직접 정의한 생성자를 반드시 호출해야한다는 점이다. 즉, 초기화하지 않고 인스턴스만 있는 유령회원이 나올 가능성을 원천적으로 막아준다. 그렇기 때문에 생성자를 사용하면 필수값 입력을 보장할 수 있다.
- 매개변수가 없는 생성자를 기본 생성자라고 한다.
- 생성자가 하나도 없으면 자바 컴파일러는 매개변수가 없고 작동하는 코드가 없는 기본 생성자를 자동으로 만들어준다.
- 생성자가 하나라도 있으면 자바는 기본 생성자를 만들지 않고 사용자가 정의한 생성자를 직접 호출해야 한다.
- 클래스가 public이면 생성자에도 public이 앞에 붙는다.
- 생성자도 메서드 오버로딩처럼 매개변수의 개수, 타입만 다르게 해서 생성자를 제공할 수 있다.
this()라는 기능을 사용하면 생성자 내부에서 자신의 생성자를 호출할 수 있다. 중복 제거를 할 수 있다.
단, 생성자 코드 내부에서 첫줄에만 입력이 가능하다. 두 번째 줄 이후로 하면 컴파일 오류가 발생한다.
MemberConstruct(String name, int age) {
this(name, age, 50); //변경
}
MemberConstruct(String name, int age, int grade) {
System.out.println("생성자 호출 name=" + name + ",age=" + age + ",grade=" + grade);
this.name = name;
this.age = age;
this.grade = grade;
}
이 경우 첫 번째 생성자 내부에서 두 번째 생성자를 호출한다.
--끝--
'inflearn' 카테고리의 다른 글
[인프런] 김영한의 자바 기본 강의 섹션6. 접근 제어자 (240109) (2) | 2024.01.10 |
---|---|
[인프런] 김영한의 자바 기본 강의 섹션5. 패키지 (240109) (1) | 2024.01.09 |
[인프런] 김영한의 자바 기본 강의 섹션3. 객체지향 프로그래밍 (240105) (1) | 2024.01.06 |
[인프런] 김영한의 자바 기본 강의 섹션2. 기본형과 참조형 (240105) (0) | 2024.01.06 |
[인프런] 김영한의 자바 기본 강의 섹션1. 클래스와 데이터 (240104) (3) | 2024.01.05 |