JAVA 시작하기 - 생성자(Constructor)

Big Jay·2023년 8월 27일
0

Java 시작하기

목록 보기
12/14
post-thumbnail

생성자(Constructor)

자바에서 객체의 생성과 동시에 인스턴스 변수를 원하는 값으로 초기화 할수 있는 메소드로 생성자의 이름은 해당 클래스의 이름과 같아야한다.

1. 생성자 특징

  1. 생성자는 반환값이 없지만, 반환 타입을 void형으로 선언하지 않는다.
  2. 생성자는 초기화를 위한 데이터를 인수로 전달받을 수 있다.
  3. 객체를 초기화하는 방법이 여러 개 존재할 경우 하나의 클래스가 여러 개의 생성자를 가질 수 있다. 즉 메소드 오버로딩이 가능하다.
// 메소드 오버로딩
person(String name){}
person(String name, int age){}
person(String name, int age, String address){}
person(String name, int age, String address, String hobby){}

2. 생성자 선언

클래스 생성자를 선언하는 문법

클래스이름(){...} // 매개변수 없는 생성자 선언
클래스이름(인수1, 인수2, ...){...} // 매개변수가 있는 생성자 선언
person(String name, int age, String address, String hobby){
	this.name = name;
    this.age = age;
    this.address = address;
    this.hobby = hobby;
}

이 때, 주의 사항을 반한값을 명시하지 않는다.

3. 생성자의 호출

new 키워드를 사용하여 객체를 생성할 때 자동을 생성자가 호출된다.

package Constructor;

class Person {
    String name;
    int age;
    String hobby;

	// 생성자 선언
    Person(String name, int age, String hobby){
        this.name = name;
        this.age = age;
        this.hobby = hobby;
    }

    public String getName(){
        return name;
    }
}

public class User {
    public static void main(String[] args) {
    	// new 키워드를 통한 생성자 호출
        Person person = new Person("Jay", 12, "game");

        System.out.println(person.getName());
    }
}

4. 기본 생성자

자바의 모든 클래스에는 하나 이상의 생성자가 정의되어 있어야 하지만
자바 컴파일러는 기본 생성자를 제공하므로, 생성자를 정의하지 않고도 인스턴스를 생성할 수 있다. 다만 매개변수를 하나도 가지지 않으며, 아무런 명령어도 포함되어 있으면 안된다.

자바 컴파일러는 컴파일시 클래스에 생성자가 하나도 정의되어 있지 않으면, 자동으로 다음과 같은 기본 생성자를 추가한다.

클래스이름(){}
Person(){}
class Person {
    private String name = "jay";
    private int age = 12;
    private String hobby = "Watching Movie";

    public void getPerson(){
       System.out.println(this.name + "님 환영합니다.");
    }
}

public class User {
    public static void main(String[] args) {
        Person person = new Person(); // 기본 생성자의 호출
        person.greeting(); // jay님 안녕하세요.
    }
}

요약

  1. 매개변수가 없는 클래스의 경우 기본 생성자를 사용할 수 있다.
  2. 매개변수가 있다면 클래스 내 생성자를 선언해준다.
  3. 메소드 오버로딩이 가능하다.

참고자료

profile
안녕하세요.

0개의 댓글