JAVA/기본 이론

JAVA | 생성자(Constructor)

로아다 2023. 3. 24. 15:57
728x90
반응형
클래스의 생성자(Constructor)

- 해당 클래스의 새 인스턴스를 생성할 때 new와 함께 사용하는 것

- 생성자를 정의하지 않은 클래스에는 기본 생성자가 자동으로 생성된다. (인스턴스를 생성할 때 아무 동작도 하지 않음)

 

public static void main(String[] args) {
		
		Apple a1 = new Apple(); // 기본 생성자
		
		// import를 안하고 클래스를 사용하는 방법
		myobj.Orange o1 = new myobj.Orange();
		myobj.Orange o2 = new myobj.Orange("America");
		myobj.Orange o3 = new myobj.Orange("터키", 3000, 'A');
		
		o1.info();
		o2.info();
		o3.info();
	}
 }
 
package myobj;

public class Orange {
	
	public String country;
	public int price;
	public char grade;
	
	// 생성자 : 클래스이름과 똑같은 이름의 메서드, 리턴 타입이 없다.
	// 해당 클래스의 인스턴스가 만들어 질 때 가장 먼저 호출된다.
	public Orange() {
		this("제주도", 2000, 'B');
	}
	
	// 생성자 오버로딩 : 클래스는 다양한 오버로딩의 생성자를 가질 수 있다.
	public Orange(String country) {
		this(country, 2000, 'B'); // 다른 생성자 호출, 생성자 맨 윗줄에서만 사용 가능
	}
 	
	// 생성자는 주로 인스턴스 생성과 동시에 인스턴스 변수를 초기화할 때 사용된다.
	public Orange(String country, int price, char grade) {
		this.country = country;
		this.price = price;
		this.grade = grade;
	}
	
	public void info() {
		// this : 현재 인스턴스 자기 자신
		// 메서드 내부에 인스턴스 변수와 같은 이름의 변수가 존재할 때
		// this를 통해 정확하게 구분할 수 있다.
		// 메서드 내부에 겹치는 이름의 변수가 없다면 this를 생략해도 무방하다.
		
		// ※ 사용하면 안되는 변수들
		int country = -1;
		double price = 123.123;
		char grade = 'A';
		
		// this를 통해 인스턴스 영역의 변수들을 가져올 수 있다.
		System.out.printf("원산지 : %s\n가격 : %d\n등급 : %c\n", 
				this.country, this.price, this.grade);
	}
}

 

728x90
반응형