[Java] 생성자(constructor)와 생성자 오버로딩(constructor overroding)

업데이트:

생성자(constructor)

  • 객체를 생성할 때 new 키워드와 함께 호출(객체 생성 외에는 호출할 수 없음)
  • 인스턴스를 초기화 하는 코드가 구현됨(주로 멤버 변수 초기화)
  • 반환 값이 없음, 상속되지 않음
  • 생성자는 클래스 이름과 동일

사실 우리는 생성자를 사용했었다. 아래의 코드를보자.

Student studentLee = new Student();

이것은 기본생성자라고 한다.

기본 생성자(default constructor)

  • 하나의 클래스에는 반드시 하나 이상의 생성자가 존재해야함
  • 프로그래머가 생성자를 구현하지않으면 자바 컴파일러가 생성자 코드를 넣어줌 (이게 기본생성자이다.)
  • 기본생성자는 매개변수가 없고, 구현부가 없음
  • 만약 클래스에 다른 생성자가 있는 경우 디폴트 생성자는 제공되지 않음

기본으로 생성성되는 기본생성자 말고 직접 생성자를 구현해보자

  • “나는 학생을 생성할때 항상 학생의 이름과 학번을 초기화하고싶다.”
pubic Student(int id, String name){
	studentID = id;
	studentName = name;
	address = "주소없음";
}
  • “이름은 꼭 초기화 하고싶다.””
pubic Student(String name){
	studentName = name;
	}

이렇게 생성자를 여러개 놓을수있다. 이것을 오버로딩(Overloading)이라고한다. 이름이 같지만 매개변수가 다른경우에 여러개의 메서드나 생성자가 있을수 있다.

생성자 오버로딩(constructor overloading)

  • 생성자를 두개이상 구현하는 경우
  • 사용하는 코드에서 여러 생성자 중 선택하여 사용할 수 있음
  • private 변수도 생성자를 이용하여 초기화를 할 수 있음
private int studentID

이 클래스 내부에서만 사용가능한 변수. 외부에서는 참조할수 없다 라는 의미. 나중에 정보은닉을 배울때 더 자세히 배우겠다.