728x90
목차
1. 생성자
■ 생성자란?
- new 키워드를 통해 생성자를 사용
- new 키워드를 사용시 Heap 영역에서 메모리를 빌려쓰는데 이를 동적 메모리 할당이라고 함
- 생성자는 클래스명과 일치하며 형태는 메소드 형태
- 기본 생성자는 기본적으로 생략되어 있음
- 생서자는 오버로딩 가능
- 반환 자료형을 우리가 정의할 필요없이 주소값을 리턴하는 자료형
- 생성하는 것과 대입하는 것은 별개임
■ 종류
- @NoArgsConstructor은 매개변수가 없는 기본 생성자를 생성
- @AllArgsConstructor은 모든 멤버 변수를 매개 변수로 받는 생성자를 생성
- @RequiredArgsConstructor은 final인 멤버 변수만 매개 변수로 받는 생성자를 생성(의존성 주입)
■ this
- 생성자를 호출할 때 값을 넣어주기 위해서 멤버 변수에 this.을 사용하여 구분
- this는 자기 자신의 주소를 나타냄
- .은 참조를 뜻함
2. 예시
■ J10_Student
package j10_생성자;
public class J10_Student {
// 참조 변수, 레퍼런스 변수, 멤버 변수
public String name;
public int age;
// 참조 메소드, 레퍼런스 메소드, 멤버 메소드
J10_Student() {
System.out.println("기본 생성자 호출");
}
J10_Student(int age) {
System.out.println("학생의 나이 : " + age);
}
J10_Student(String name) {
System.out.println("학생의 이름 : " + name);
}
J10_Student(String name, int age) {
// 생성자를 호출할 때 값을 넣어주기 위해서 멤버 변수에 this. 사용하여 구분하여 줌
// 우선 순위는 지역 변수가 멤버 변수보다 더 높음
// this는 자기 자신의 주소를 나타냄
this.name = name;
this.age = age;
}
void printInfo() {
System.out.println("학생 이름 : " + name);
System.out.println("학생 나이 : " + age);
}
}
■ J10_StudentMain
package j10_생성자;
public class J10_StudentMain {
public static void main(String[] args) {
J10_Student s1 = new J10_Student("박성진", 29);
s1.printInfo();
}
}