Java

생성자(constructor)

H_u 2024. 4. 16. 17:04
728x90
반응형
SMALL

학습 목표

  • 기본 생성자에 대해 알아보자.
  • 사용자 정의 생성자에 대해 알아보자.
  • 생성자 오버로딩이란 뭘까?

1. 기본 생성자에 대해 알아보자.

생성자(Constructor)는 클래스의 인스턴스,

즉 객체를 생성할 때 호출되는 특별한 유형의 메서드입니다.

객체의 초기화를 담당하며, 객체가 올바르게 사용될 수 있도록 필요한 값들을 설정하고, 필요한 초기화 코드를 실행합니다.

 

생성자의 주요 특징

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

 

기본 생성자 (default constructor)

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

 

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

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

package basic.ch08;

 

public class Student {

// 생성사 - constructor

// 객체를 생성할 때 다음과 같은 모양으로 만들어라고 강제로 지시하는 것

// 생성자는 객체를 생성할 때 반드시 존재해야한다.

 

String name;

int number;

int grade;

public Student() {}

//생성자는 리턴 타입이 없다.

//클래스 이름과 같다면(대문자까지 동일)

//생성자라고 부를수 있다.

public Student(String s, int n1, int n2) { //기본생성자

name = s;

number = n1;

grade = n2;

//중요 별3개!!!!!!

//생성자는 객체가 처음 만들어 질때

//제일 먼저 수행하는 코드 입니다!!

}

 

 

//매소드 정의

public void showInfo() {

System.out.println("학생의 이름은 " +name);

System.out.println("학생의 번호는 " +number);

System.out.println("학생의 학년은 " +grade);

 

}

//기본생성자는 컴파일러가

//.class 파일을 만들 때

//사용자 정의 생성자가 하나도 없다면

//자동으로 코드를 넣어준다

 

//사용자 정의 생성자란 뭘까?

//클래스 설계자가 인스턴스화 했을 때

//정상적으로 동작해야 하는 초기값들이

//필요하다면 강제성을 부여한다.

 

}// 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("김성후", 30, 3);

s2.showInfo();

 

//변수에 직접 접근해서 값을 초기화 해보세요

Student s3 = new Student();

s3.name = "바보";

s3.number = 69;

s3.grade = 1;

s3.showInfo();

 

//생성자를 여러개 만들어 줄 수 있다.

//생성자 오버로딩이라고 한다.

 

}//end of main

 

}// end of class

 

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개를 받는 생성자를 만들어주세요

public UserInfo(String id, String name, String ps) {

userId = id;

userName = name;

userPassword = ps;

}

public UserInfo(String id, String name, String ps, String ad) {

userId = id;

userName = name;

userPassword = ps;

userAddress = ad;

}

public UserInfo(String id, String name, String ps, String ad, String pn) {

userId = id;

userName = name;

userPassword = ps;

userAddress = ad;

phoneNumber = pn;

}

 

}//end of class

 

package basic.ch08;

 

public class UserInfoMainTest {

public static void main(String[] args) {

 

 

UserInfo userInfo = new UserInfo("123");

 

}//end of main

}//end of class

728x90
반응형
SMALL