[JAVA]생성자와 생성자오버로딩

정연진·2021년 4월 1일
0
post-custom-banner

public class Exam {
	private int kor;
	private int eng;
	private int math;
	
	public Exam() {
		this(10,10,10);//오버로드 생성자 호출
	}
	
	//오버로드 생성자 (오버로드생성자 있으면 기본생성자 안만들어줌.기본생성자는 만들어주는게 좋음)
	public Exam(int kor, int eng, int math) {
		this.kor=kor;
		this.eng=eng;
		this.math=math;
	}
	
	public int total(int ext) {
		return kor+eng+math;
	}

	public int total() {
		return kor+eng+math;
		
	}
	public float avg() {
		return total()/3.0f;
	}
}

위 코드는 kor,eng,math 세 과목의 점수 변수를 가지며
total,avg을 구하는 메소드를 갖는 클래스이다.

위 클래스에는 생성자가 두 개인 것을 볼 수 있다.
첫 번째로

public Exam() {
		this(10,10,10);//오버로드 생성자 호출
	}

기본 생성자이다.
기본 생성자는 매개변수를 갖지 않는다.
기본 생성자에서는 오버로드 생성자를 호출해주었다.

오버로드 생성자는 다음과 같다.

public Exam(int kor, int eng, int math) {
		this.kor=kor;
		this.eng=eng;
		this.math=math;
	}

세 개의 매개변수를 갖는 오버로드 생성자이다.

  • 오버로드란?
    overloading : 과적재한다는 의미로, 한 메소드에서 파생되어 이름은 같지만 매개변수의 개수나 유형이 다른 것을 의미한다.

다시 본론으로 돌아와서
우리가 한 클래스에서 생성자를 만들어 주지 않는다면,
객체가 생성될때 기본생성자가 자동으로 생성된다.

하지만 매개변수를 갖는(오버로드) 생성자를 만들어준다면?
기본생성자를 자동으로 생성해주지 않는다.
그 때 Exam e = new Exam(); 과 같이 매개변수 없이 객체를 생성해준다면 에러가 발생하게 된다.
따라서 오버로드 생성자를 만들어줬다면 기본생성자도 만들어 주는 것이 좋은 습관이다.

profile
열공해욧
post-custom-banner

0개의 댓글