티스토리 뷰

Backend/JAVA

JAVA 생성자(Constructor)

heeju 2023. 7. 6. 10:09

 

 

기본 생성자  (코드를 입력하지 않아도 자동으로 생성됨)

class Person {
	public Person() {}
}

 

 

 

 

만든 생성자 (매개변수를 명시한 만든 생성자만 있을 경우 기본 생성자를 사용할 수 없음)

public class Person {

    String name;
    int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public static void main(String[] ages) {
        // Person person = new Person(); // 기본 생성자를 따로 명시하지 않았으므로 오류

        Person person2 = new Person("이름", 25); // 인스턴스 생성시 인자가 있어야 함
    }
}

 

 

 

 

매개변수가 있는 만든 생성자와, 매개변수가 없는 기본 생성자를 두개 다 사용하고 싶을 경우

public class Person {
    String name;
    int age;

    public Person() {}

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    public static void main(String[] ages) {
        Person person = new Person(); // 기본 생성자로 인스턴스 생성

        Person person2 = new Person("이름", 25); // 인자값을 넣어 만든 생성자로 인스턴스 생성
    }
}

 

 

 

 

초기값을 지정하고 싶을 경우 만든 생성자기본 생성자 두개가 필요함

public class Person {

    String name;
    int age;

    public Person() {
    	// this는 이 클래스를 가리킴
        this("no name", 1); // 아래 만들어놓은 생성자를 호출하여 초기값 설정
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public void showPerson() {
        System.out.println(name + ", " + age);
    }

    public static void main(String[] ages) {
        Person person = new Person();
        person.showPerson(); // 결과 : no name, 1

        Person person2 = new Person("이름", 25);
        person2.showPerson(); // 결과 : 이름, 25
    }
}

 

 

 

※ 매개변수, 인자 차이

   - 매개변수 : 메소드나 생성자에 사용하는 지정하는 값

   - 인자 : 만든 메소드나 생성자를 호출하여 넣어주는 값

public class Person {

    String name;
    int age;

    public Person(String name, int age) { // name, age는 매개변수
        this.name = name;
        this.age = age;
    }

    public static void main(String[] ages) {
        Person person = new Person("이름", 25); // "이름", 25는 인자
    }
}

 

 

 

반응형

'Backend > JAVA' 카테고리의 다른 글

JAVA 접근 제어자(클래스, 메소드 & 변수)  (0) 2023.07.06
JAVA 클래스 인스턴스 예제  (0) 2023.07.04
댓글
반응형
최근에 올라온 글
공지사항