[자바 무료 강의] 생성자 오버로딩 - 코드라떼
Lesson List button
코스자바로 배우는 프로그래밍
hamburger button
강의생성자 오버로딩최종수정일 2021-09-07
아이콘약 2분

생성자를 여러 개 만들면 다양한 방식으로 인스턴스를 생성할 수 있습니다. 이러한 것을 생성자 오버 로딩이라고 하는데요. 생성자 오버 로딩에 도 주의할 점이 있습니다. 강의에서 확인해보죠

추가 노트

목차


  1. 생성자 오버로딩
  2. 생성자 오버로딩 시 this(...)
  3. [실습해보기] 생성자 오버로딩 사용해보기




생성자 오버로딩


여러개의 생성자를 선언하는 것을 생성자 오버로딩이라고 합니다.

class Person { String name; int age; String gender; Person(String name) { this.name = name; } Person(int age) { this.age = age; } Person(String name, int age) { this.name = name; this.age = age; } }
copy
Person person1 = new Person("이름", 1); Person person2 = new Person("이름"); Person person3 = new Person(1);
copy


다만 생성자를 오버로딩 할 때 주의할 점이 있습니다.

같은 자료형의 매개변수로 생성자를 선언하여 오버로딩 할 수 없습니다.

class Person { String name; int age; String gender; // 같은 자료형의 매개변수로 오버로딩 할 수 없다. Person(String name, int age) { this.name = name; this.age = age; } // 같은 자료형의 매개변수로 오버로딩 할 수 없다. Person(String gender, int age) { this.gender = gender; this.age = age; } }
copy
Person person = new Person("a", 1);
copy

이유는 간단합니다. new Person(“a”);Person(String name, int age)을 호출해야 할 지 Person(String gender, int age)를 호출해야 할 지 알 수 없기 때문입니다. 인간도 알 수 없고 컴퓨터도 알 수 없습니다.




this(...)


this()는 클래스 내부에서 자기 자신의 생성자를 호출 하는 방식으로 생성자 내부에서만 사용할 수 있는 명령어입니다.
image

일반적으론 이렇게 생성자를 선언하여 인스턴스를 생성할 수 있는데요. 코드 중복을 줄이기 위해 이렇게 사용할 수도 있습니다.

image

인스턴스 생성 명령어가 실행되면 생성자 내부에서 오버로딩된 생성자를 호출하여 데이터를 초기화 할 수 있습니다. 이러한 방식은 this() 명령어에 넣는 인자에 의해서 어떤 생성자를 호출할지 정해집니다.

image

this(name)이란 것은 String 자료형 매개변수인 생성자를 호출하는 명령어이고, this(name, age)String, int 자료형 매개변수인 생성자를 호출하는 명령어입니다.




[실습해보기] 생성자 오버로딩 사용해보기


1. this() 사용해보기

case 1

코드 작성(Person.java)

class Person { String name; int age; String gender; Person(String name) { this.name = name; } Person(String name, int age) { this(name); this.age = age; } Person(String name, int age, String gender) { this(name, age); this.gender = gender; } }
copy



코드 작성(Main.java)

public class Main { public static void main(String[] args) { Person person1 = new Person("김철수", 20, "male"); System.out.println(person1.name); System.out.println(person1.age); System.out.println(person1.gender); Person person2 = new Person("김안나", 25); System.out.println(person2.name); System.out.println(person2.age); System.out.println(person2.gender); } }
copy



출력

김철수 20 male 김안나 25 null
copy
도전자 질문
작성된 질문이 없습니다
이용약관|개인정보취급방침
알유티씨클래스|대표, 개인정보보호책임자 : 이병록
이메일 : cs@codelatte.io
사업자등록번호 : 824-06-01921
통신판매업신고 : 2021-성남분당C-0740
주소 : 경기도 성남시 분당구 대왕판교로645번길 12, 9층 24호
파일
파일파일
Root
파일

실습해보세요의 코드를 작성해보세요.

Output
root$
Lesson List button
코스자바로 배우는 프로그래밍
hamburger button
강의생성자 오버로딩최종수정일 2021-09-07
아이콘약 2분

생성자를 여러 개 만들면 다양한 방식으로 인스턴스를 생성할 수 있습니다. 이러한 것을 생성자 오버 로딩이라고 하는데요. 생성자 오버 로딩에 도 주의할 점이 있습니다. 강의에서 확인해보죠

추가 노트

목차


  1. 생성자 오버로딩
  2. 생성자 오버로딩 시 this(...)
  3. [실습해보기] 생성자 오버로딩 사용해보기




생성자 오버로딩


여러개의 생성자를 선언하는 것을 생성자 오버로딩이라고 합니다.

class Person { String name; int age; String gender; Person(String name) { this.name = name; } Person(int age) { this.age = age; } Person(String name, int age) { this.name = name; this.age = age; } }
copy
Person person1 = new Person("이름", 1); Person person2 = new Person("이름"); Person person3 = new Person(1);
copy


다만 생성자를 오버로딩 할 때 주의할 점이 있습니다.

같은 자료형의 매개변수로 생성자를 선언하여 오버로딩 할 수 없습니다.

class Person { String name; int age; String gender; // 같은 자료형의 매개변수로 오버로딩 할 수 없다. Person(String name, int age) { this.name = name; this.age = age; } // 같은 자료형의 매개변수로 오버로딩 할 수 없다. Person(String gender, int age) { this.gender = gender; this.age = age; } }
copy
Person person = new Person("a", 1);
copy

이유는 간단합니다. new Person(“a”);Person(String name, int age)을 호출해야 할 지 Person(String gender, int age)를 호출해야 할 지 알 수 없기 때문입니다. 인간도 알 수 없고 컴퓨터도 알 수 없습니다.




this(...)


this()는 클래스 내부에서 자기 자신의 생성자를 호출 하는 방식으로 생성자 내부에서만 사용할 수 있는 명령어입니다.
image

일반적으론 이렇게 생성자를 선언하여 인스턴스를 생성할 수 있는데요. 코드 중복을 줄이기 위해 이렇게 사용할 수도 있습니다.

image

인스턴스 생성 명령어가 실행되면 생성자 내부에서 오버로딩된 생성자를 호출하여 데이터를 초기화 할 수 있습니다. 이러한 방식은 this() 명령어에 넣는 인자에 의해서 어떤 생성자를 호출할지 정해집니다.

image

this(name)이란 것은 String 자료형 매개변수인 생성자를 호출하는 명령어이고, this(name, age)String, int 자료형 매개변수인 생성자를 호출하는 명령어입니다.




[실습해보기] 생성자 오버로딩 사용해보기


1. this() 사용해보기

case 1

코드 작성(Person.java)

class Person { String name; int age; String gender; Person(String name) { this.name = name; } Person(String name, int age) { this(name); this.age = age; } Person(String name, int age, String gender) { this(name, age); this.gender = gender; } }
copy



코드 작성(Main.java)

public class Main { public static void main(String[] args) { Person person1 = new Person("김철수", 20, "male"); System.out.println(person1.name); System.out.println(person1.age); System.out.println(person1.gender); Person person2 = new Person("김안나", 25); System.out.println(person2.name); System.out.println(person2.age); System.out.println(person2.gender); } }
copy



출력

김철수 20 male 김안나 25 null
copy
도전자 질문
작성된 질문이 없습니다
이용약관|개인정보취급방침
알유티씨클래스|대표, 개인정보보호책임자 : 이병록
이메일 : cs@codelatte.io|운영시간 09:00 - 18:00(평일)
사업자등록번호 : 824-06-01921|통신판매업신고 : 2021-성남분당C-0740
주소 : 경기도 성남시 분당구 대왕판교로645번길 12, 9층 24호(경기창조혁신센터)
파일
파일파일
Root
파일

실습해보세요의 코드를 작성해보세요.

Output
root$