본문 바로가기
Programming Languages/Java

Chapter 12. 생성자

by 더 이프 2023. 1. 11.
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();
    	}
    
    }