본문 바로가기

Java/information

[자바/JAVA] 생성자

인스턴스 변수에 다른 인스턴스를 담으면 같은 주소값을 참조한다.
같은 클래스로 다양한 객체를 계속해서 생성 가능하다.
클래스 외부에서 사용할 경우 우선적으로 클래스로부터 객체를 생성한 뒤 필드를 사용해야한다.
필드 선언 : 클래스 중괄호{} 블록 어디서든 선언하나, 생성자와 메소드 내부에서는 선언할 수 없다.
필드 사용 : 클래스 내부의 생성자와 메소드에서 바로 사용이 가능하나, 클래스 외부에서 사용할 경우네는 반드시 객체를 생성하고 참조 변수를 통해 사용해야 한다.

개발자가 임의로 생성자 함수를 만들지 않으면 자동으로 기본 생성자 함수가 생성되어 호출된다.
개발자가 임의로 생성자 함수를 만들면 자동으로 생성되었던 기본 생성자 함수는 자동 생성되지 않는다!
생성자 함수의 역할 : 데이터 초기화
this가 의미한 것은 클래스 자기자신
임의로 생성자 함수를 만들었을 때 기본 생성자 함수는 자동으로 만들어지지 않으므로
매개변수 없는 기본 생성자 함수를 사용하고 싶다면 개발자가 직접 기본 생성자 함수 코드를 추가해야 한다!

생성자
-인스턴스가 생성되는 순간에 자동으로 호출되는 특별한 메소드로 인스턴스에 필요한 공간을 만들고 초기화하는 역할
필드를 초기화하거나 메소드를 호출해서 객체를 사용할 준비를 한다. 생성자는 메소드와 비슷하게 생겼지만, 클래스 이름으로 되어 있고 리턴 타입이 없다.

생성자 특징
생성자명은 클래스명과 같아야 한다.
생성자는 인스턴스가 생성될 때 자동으로 호출되는 특별한 메소드이다.
생성자는 반환값이 없는 메소드이다.
생성자는 얼마든지 오버로딩하여 사용할 수 있다.

default constructor
new 키워드를 이용하여 인스턴스를 생성시, 생성자가 호출
생성자가 클래스에 없다면 new할 때 디폴트 생성자가 자동으로 호출
디폴트 생성자는 이름이 클래스명과 똑같고 매개변수가 없음

매개변수가 있는 생성자
기본 생성자 대신 우리가 생성자를 명시적으로 선언하여 인스턴스를 생성할 때 인스턴스를 원하느 값으로 초기화하려면 사용하며 매개변수 선언은 생략할 수도 있고, 여러 개를 선언할 수도 있다.
매개변수명과 클래스의 변수명이 다를때에는 this 키워드는 불필요하다.
매개변수 있는 생성자 함수만 만들었으므로 기본 생성자 함수로 객체 생성을 할 수 없다.

this는 주로 생성자와 메소드의 매개변수 이름이 필드와 동일한 경우, 인스턴스 멤버인 필드임을 명시하고자 할 때 사용된다.
다른 생성자 호출 : this()
this 키워드는 어떤 생성자가 오버로딩된 다른 생성자를 호출할 때도 사용한다.
반드시 생성자 첫 줄에 한 번만 써야 함.

기본 생성자 : 클래스 선언 시 컴파일러에 의해 자동으로 추가되는 생성자
생성자 선언 : 클래스로부터 객체를 생성할 때 호출되는 생성자를 명시적으로 선언할 수 있다. 생성자를 선언하면 기본 생성자는 생성되지 않는다.
매개 변수 : 생성자 호출 시 값을 전달받기 위해 선언되는 변수
객체 초기화 : 객체를 사용하기 전에 준비하는 과정으로 필드를 선언할 때 초기화하거나 생성자 내부에서 필드값을 초기화할 수 있으며, 메소드를 호출하는 내용으로 구성된다.
오버로딩 : 매개 변수를 달리하는 생성자를 여러 개 선언하는 것을 말한다.
this() : 객체 자신의 또 다른 생성자를 호출할 때 사용한다.

같은 클래스에 있는 메소드를 호출할 때 this.메소드명()으로 사용