Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

햄발

생성자 (constructor) 본문

Java

생성자 (constructor)

햄발자 2024. 4. 16. 16:54

 

 

기본 생성자

생성자(Constructor)는 클래스의 인스턴스, 즉 객체를 생성할 때 호출되는 특별한 유형의 메서드다.객체의 초기화를 담당하며, 객체가 올바르게 사용될 수 있도록 필요한 값들을 설정하고, 필요한 초기화 코드를 실행한다.

 

  • 클래스에는 반드시 적어도 하나 이상의 생성자가 존재한다.
  • 클래스에 생성자를 구현하지 않아도 new 키워드와 함께 생성자를 호출할 수 있다.
  • 클래스에 생성자가 하나도 없는 경우 컴파일러가 생성자 코드를 넣어 준다.

 

 

 

 

생성자의 주요 특징

  • 생성자의 이름은 클래스의 이름과 동일해야 한다.
  • 생성자는 반환 타입을 가지지 않으며, 심지어 void 도 사용하지 않는다.
  • 객체 생성 시 new 키워드와 함께 자동으로 호출된다.
  • 생성자는 기본 생성자와 사용자 정의 생성자로 구분할 수 있다.

 

사용자 정의 생성자(Overloaded Constructor) 매개변수가 있는 생성자

  • 이를 통해 객체 생성 시 특정 값으로 초기화할 수 있다.
  • 사용자 정의 생성자를 선언하면 컴파일러는 기본 생성자 (default constructor)는 제공되지 않는다.
  • 필요에 따라 여러 생성자를 만들어 줄 수 있다.

 

예시

package basic.ch08;

public class Student {

// 생성자 - constructor
// 객체를 생성할 때 다음과 같은 모양으로 만들어라고 강제로 지시하는 것
// 생성자는 객체를 생성할 때 반드시 존재해야 한다. 

String name; 
int number; 
int grade; 

// 생성자는 리턴 타입이 없다.
// 클래스 이름과 같다면 (대문자까지 동일)
// 생성자라고 부른다 
public Student() {  }  // <-- 기본 생성자 
// 기본 생성자는 컴파일러가 .class 파일을 만들 때
// 사용자 정의 생성자가 하나도 없다면 
// 자동으로 코드를 넣어 준다. 


// 사용자 정의 생성자란? 
// 클래스 설계자가 인스턴스화 했을 때 정상적으로 
// 동작해야 하는 초기값들이 필요하다면 강제성을 부여 하는 것 
public Student(String s, int n1, int n2) {
name = s;
number = n1;
grade = n2;
// 중요 별표 3개 
// 생성자는 객체가 처음 만들어 질 때 
// 제일 먼저 수행하는 코드 이다. 
showInfo();
}

// 메서드 정의 
public void showInfo() {
System.out.println("학생의 이름은 " + name);
System.out.println("학생의 번호는 " + number);
System.out.println("학생의 학년은 " + grade);
}

} // end of class 

 

예시

package basic.ch08;

public class StudentMainTest {

public static void main(String[] args) {

Student s1 = new Student("홍길동", 101, 3); // 객체 
// System.out.println(s1); // 주소값이 출력이 된다. 
// s1.showInfo();

// 연습문제 
// s2 참조 변수에 이름으로 학생을 메모리에 올리고
// 호출해주세요 
Student s2 = new Student("이순신", 102, 2); // 객체

// 변수에 직접 접근해서 값을 초기화 해보세요
Student s3 = new Student(); // 기본 생성자로 메모리가 올림
s3.name = "야스오";
s3.grade = 1; 
s3.number = 103;


// 생성자를 여러개 만들어 줄 수 있다
// 생성자 오버로딩이라고 한다.  

} // end of main 

}

 

생성자 오버로딩 만드는 예시

package basic.ch08;

public class UserInfo {

public String userId; 
public String userPassword; 
public String userName; 
public String userAddress; 
public String phoneNumber; 

// 생성자 오버로딩이란 
// 생성자의 개수가 여러개 있다 

// 기본 생성자 형태 만들어 보기 
public UserInfo() {}

public UserInfo(String id) {
userId = id;
}

public UserInfo(String id, String name) {
userId = id; 
userName = name;
}

// 연습 문제 
// 1 - 매개변수 3개를 받는 생성자를 만들어 주세요 

// 2 - 매개변수 4개를 받는 생성자를 만들어 주세요

// 3 - 매개변수 5개를 받는 생성자를 만들어 주세요


} // end of class 
package basic.ch08;

public class UserInfoMainTest {

// 코드의 시작점 - 메인 함수 
public static void main(String[] args) {
UserInfo userInfo1 = new UserInfo("123");

} // end of main 
 
} // end of class 

 

'Java' 카테고리의 다른 글

this  (0) 2024.04.19
접근 제어 지시자  (0) 2024.04.17
객체지향 패러다임  (0) 2024.04.16
RunTime Data Area  (0) 2024.04.16
메소드(method)와 변수  (0) 2024.04.15