본문 바로가기

프로그래밍언어/Java

[Java 기본] 생성자 - 오버로딩과 this()

오버로딩


생성자도 메서드 오버로딩처럼 매개변수만 다르게 해서 여러 생성자를 만들 수 있다. MemberConstruct.java

public class MemberConstruct {
    String name;
    int age;
    int grade;

    //생성자 추가
    MemberConstruct(String name, int age) {
        this.name = name;
        this.age = age;
        this.grade = 50;
        System.out.println("생성자 호출 name = " + this.name + ", age = " + this.age + ", grade = " + this.grade);
    }

    MemberConstruct(String name, int age, int grade) {
        this.name = name;
        this.age = age;
        this.grade = grade;
        System.out.println("생성자 호출 name = " + this.name + ", age = " + this.age + ", grade = " + this.grade);
    }

}

 

ConstructMain.java

    public static void main(String[] args) {
        MemberConstruct member = new MemberConstruct("user1", 15, 90);
        MemberConstruct member2 = new MemberConstruct("user2", 15);
    }

 

 

=> this.name, this.age

 

 

this()


 

위의 코드에 생성자를 보면 중복되는 부분이 있다.

this.name, this.age를 초기화 해주는 부분이다. 이 부분을 아래처럼 쓸 수 있다.

public class MemberConstruct {
    String name;
    int age;
    int grade;

    //생성자 추가
    MemberConstruct(String name, int age) {
        this(name, age, 50)
        System.out.println("생성자 호출 name = " + this.name + ", age = " + this.age + ", grade = " + this.grade);
    }

    MemberConstruct(String name, int age, int grade) {
        this.name = name;
        this.age = age;
        this.grade = grade;
        System.out.println("생성자 호출 name = " + this.name + ", age = " + this.age + ", grade = " + this.grade);
    }
}

 

this()라는 기능을 사용하면 생성자 내부에서 자신의 생성자를 호출할 수 있다. 

 

 

this() 규칙


this()는 사용하려면 규칙을 지켜야 한다. 

  • this()는 생성자 코드의 첫줄에만 작성할 수 있다.

=> 오류가 발생하는 것을 확인할 수 있다. 

 

 

* 인프런 '김영한의 실전 자바 - 기본편'을 참고하여 작성하였습니다. 

'프로그래밍언어 > Java' 카테고리의 다른 글

[Java 기본] 접근 제어자 이해  (0) 2024.07.05
[Java 기본] 패키지  (1) 2024.07.05
[Java 기본] 생성자 - 도입  (0) 2024.07.05
[Java 기본] 생성자  (0) 2024.07.04
[Java 기본] 객체란?  (0) 2024.07.04