개주 훈련일지/📚 코살대 교본 학습

생성자

lshfood2 2025. 11. 6. 18:42

생성자란?

클래스를 구성하는 요소중 하나로,

객체를 생성할 때 호출되어

객체의 초기화를 담당하는

특별한 메서드이다.

 

따라서 객체를 생성하는 모든 라이브러리용

클래스는 생성자를 가지고 있습니다.

 

[생성자]

일반 메서드와 달리 반환 타입이 없으며,

메서드 이름은 클래스 이름과 동일하다.

 

클래스를 기반으로 객체를 생성할 때,

객체의 초기화를 담당하는 역할이므로

객체를 생성할 때만 호출할 수 있다.

 

호출 시에는 new 키워드와 함께 사용된다.

클래스명 객체명 = new 클래스명();
Cat cat = new Cat();
//new 뒤에 온 Cat()이 생성자다.

[생성자 선언 이유]

메서드를 호출하며 매개변수를 통해

값을 전달했던 것처럼, 생성자 역시

매개변수를 통해 값을 전달할 수 있다.

public class Snack{
	int price;
    
    snack(int p){//int p를 매개변수로 받는 생성자
    	price=p; //인자로 받은 p가 price에 대입된다.
        //즉 snack 생성자는 객체를 생성할 때마다 p를 가격으로 책정
    }	
    void info(){
    	System.out.println("과자의 가격은"+price+"원 입니다.");
    }
}

이렇게 설정된 생성자를 통해 매개변수로

객체를 생성하면  price의 값을 제어할 수 있다.

snack chip = new Snack(5000);
	chip.info();

위와 같이 매개변수값으로 5000을 입력하여

chip 객체를 생성하게 되면 price는 5000으로 세팅되어

info를 통해 출력되는 정보에 5000원이 나오게 된다.


 

[this와 this()]

매개변수로 멤버변수와 동일한 변수명이 지정되면

중괄호 안에서 사용하기 위해 선언된 지역변수가

클래스 멤버변수보다 우선순위가 높아서

대입 연산자를 기준으로  왼쪽/오른쪽 모두

클래스 멤버변수가 아닌 매개변수를 뜻하게 된다.

class Student{
	String name;
    int age;
    int studentID;
    
    Student(String name, int age, int studentID){
    name = name; //왼쪽 오른쪽 모두 지역변수로 취급
    age = age; //왼쪽 오른쪽 모두 지역변수로 취급
    studentID = studentID;//왼쪽 오른쪽 모두 지역변수로 취급
    }
}

 

이러한 상황을 해결하기 위해 this 키워드를 사용한다.

this는 자기 자신을 참조하는데 사용하는 변수로

this를 멤버변수에 붙여서 사용하면 중괄호 안에서도

같은 이름의 매개변수와 필드를 구분해서 사용할 수 있다.

class Student{
	String name;
    int age;
    int studentID;
    
    Student(String name, int age, int studentID){
    this.name = name; //this 사용으로
    //왼쪽 name과 오른쪽 name 구분된다.
    this.age = age; 
    this.studentID = studentID;
    }
}

생성자가 오버로딩 되었을 때

동일한 코드가 반복되어 사용되는 것을

확인할 수 있는데 이런 상황에서 this()

메서드를 사용하면 간단히 코딩이 가능하다.

class Student{
	String name;
    int age;
    int studentID;
    
    Student(String name, int age, int studentID){
    this.name = name; //this 사용으로
    //왼쪽 name과 오른쪽 name 구분된다.
    this.age = age; 
    this.studentID = studentID;
    }
}

 

같은 클래스 안에 있는 생성자 중 

매개변수의 개수, 자료형, 순서에 맞는

다른 생성자를 호출하는 메서드로

생성자 내부에서만 사용이 가능하다.

Phone(String brand, int series){
this.brand = brand;
this.series = series; 
}

Phone(String brand, int series, String color){
this(brand, series);
//this()로 중복되는 brand와 series 처리
this.color = color;
}

 

'개주 훈련일지 > 📚 코살대 교본 학습' 카테고리의 다른 글

소프트웨어 생명주기  (0) 2025.11.10
상속  (0) 2025.11.08
메서드(method)  (0) 2025.11.05
소프트웨어 공학의 발전  (0) 2025.11.05
클래스(class)  (0) 2025.11.04