Top 18 생성자 오버로딩 The 189 Correct Answer

You are looking for information, articles, knowledge about the topic nail salons open on sunday near me 생성자 오버로딩 on Google, you do not find the information you need! Here are the best content compiled and compiled by the Chewathai27.com/to team, along with other related topics such as: 생성자 오버로딩 C++ 생성자, 기본 생성자, 프로그래밍 생성자, 메소드 오버로딩, 생성자 역할, 자바 생성자 호출, 자바 오버로딩


Java – overloading (1/2)
Java – overloading (1/2)


자바 입문 – 생성자 오버로딩과 this | 프로그래머스 스쿨

  • Article author: school.programmers.co.kr
  • Reviews from users: 26986 ⭐ Ratings
  • Top rated: 3.4 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 자바 입문 – 생성자 오버로딩과 this | 프로그래머스 스쿨 생성자 오버로딩. 생성자의 매개변수의 유형과 개수가 다르게 하여 같은 이름의 생성자를 여러 개 가질 수 있다. 생성자도 메소드와 마찬가지로 여러개를 선언할 수 … …
  • Most searched keywords: Whether you are looking for 자바 입문 – 생성자 오버로딩과 this | 프로그래머스 스쿨 생성자 오버로딩. 생성자의 매개변수의 유형과 개수가 다르게 하여 같은 이름의 생성자를 여러 개 가질 수 있다. 생성자도 메소드와 마찬가지로 여러개를 선언할 수 … 자바 입문 가장 널리 쓰이는 프로그래밍 언어 Java로 프로그래밍의 기초를 다져보세요. 이 강의의 내용을 책으로 만나고 싶으시면 여기를 눌러 책 정보를 확인하세요. 강의를 다 들었는데, 지금 내가 코딩 테스트 준비를 하고 있다면? 15년차 Java 전문 리더가 직접 이끄는 온라인 스터디를 추천해요. 우리, 카카오톡 친구해요! 프로그래머스 교육 카카오 채널을 만들었어요. 여기를 눌러, 친구 추가를 해주세요. 신규 교육 과정 소식은 물론 다양한 이벤트코딩 교육, 코딩, 프로그래밍, 실습, 생활코딩, 알고리즘, java, 영상/실습 강의, 웹 개발
  • Table of Contents:
자바 입문 - 생성자 오버로딩과 this | 프로그래머스 스쿨
자바 입문 – 생성자 오버로딩과 this | 프로그래머스 스쿨

Read More

Peemang IT Blog

  • Article author: peemangit.tistory.com
  • Reviews from users: 6938 ⭐ Ratings
  • Top rated: 4.3 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about Peemang IT Blog [JAVA]생성자(Constructor), 생성자 오버로딩(Overloading) 개념 및 구현 … 객체를 생성할 때 new 키워드를 사용하게 되는데 이때 생성자를 호출 … …
  • Most searched keywords: Whether you are looking for Peemang IT Blog [JAVA]생성자(Constructor), 생성자 오버로딩(Overloading) 개념 및 구현 … 객체를 생성할 때 new 키워드를 사용하게 되는데 이때 생성자를 호출 … 1. 생성자(Constructor) 란? 1) 개념 객체를 생성할 때 new 키워드를 사용하게 되는데 이때 생성자를 호출하게 된다. 객체 생성할 경우 이외에는 호출할 수 없고, 멤버 변수 초기화 등 인스턴스를 초기화 하는 코..
  • Table of Contents:

네비게이션

[JAVA]생성자(Constructor) 생성자 오버로딩(Overloading) 개념 및 구현

사이드바

검색

티스토리툴바

Peemang IT Blog
Peemang IT Blog

Read More

[JAVA]생성자와 생성자오버로딩

  • Article author: velog.io
  • Reviews from users: 9059 ⭐ Ratings
  • Top rated: 3.5 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about [JAVA]생성자와 생성자오버로딩 public Exam { private int kor; private int eng; private int math; public Exam() { this(10,10,10);//오버로드 생성자 호출 } //오버로드 … …
  • Most searched keywords: Whether you are looking for [JAVA]생성자와 생성자오버로딩 public Exam { private int kor; private int eng; private int math; public Exam() { this(10,10,10);//오버로드 생성자 호출 } //오버로드 … 위 코드는 kor,eng,math 세 과목의 점수 변수를 가지며 total,avg을 구하는 메소드를 갖는 클래스이다.위 클래스에는 생성자가 두 개인 것을 볼 수 있다.첫 번째로기본 생성자이다.기본 생성자는 매개변수를 갖지 않는다.기본 생성자에서는 오버로드 생성자를 호출
  • Table of Contents:
[JAVA]생성자와 생성자오버로딩
[JAVA]생성자와 생성자오버로딩

Read More

자바(Java) – 생성자 (Constructor)2

  • Article author: dustink.tistory.com
  • Reviews from users: 18552 ⭐ Ratings
  • Top rated: 4.1 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 자바(Java) – 생성자 (Constructor)2 생성자 오버로딩(overloading). 매개 변수를 달리하는 생성자를 여러개 선언하는 것. 외부에서 제공되는 다양한 데이터를 사용하여 객체를 초기화 … …
  • Most searched keywords: Whether you are looking for 자바(Java) – 생성자 (Constructor)2 생성자 오버로딩(overloading). 매개 변수를 달리하는 생성자를 여러개 선언하는 것. 외부에서 제공되는 다양한 데이터를 사용하여 객체를 초기화 … 생성자 오버로딩(overloading) 매개 변수를 달리하는 생성자를 여러개 선언하는 것 외부에서 제공되는 다양한 데이터를 사용하여 객체를 초기화하려면 생성자 역시 다양 해야한다 public class 클래스{ 클래스([타..
  • Table of Contents:

태그

관련글

댓글0

최근글

인기글

티스토리툴바

자바(Java) - 생성자 (Constructor)2
자바(Java) – 생성자 (Constructor)2

Read More

[Java 정리] 5. 생성자 오버로딩(Overloading) :: YoungQ

  • Article author: youngq.tistory.com
  • Reviews from users: 27194 ⭐ Ratings
  • Top rated: 4.0 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about [Java 정리] 5. 생성자 오버로딩(Overloading) :: YoungQ 생성자 오버로딩. 클래스 내에서 사용하는 생성자는 오버로딩이라는 방식을 통해 사용자가 다양한 방식으로 클래스를 초기화 할 수 있도록 지원하고 … …
  • Most searched keywords: Whether you are looking for [Java 정리] 5. 생성자 오버로딩(Overloading) :: YoungQ 생성자 오버로딩. 클래스 내에서 사용하는 생성자는 오버로딩이라는 방식을 통해 사용자가 다양한 방식으로 클래스를 초기화 할 수 있도록 지원하고 … 생성자 오버로딩 클래스 내에서 사용하는 생성자는 오버로딩이라는 방식을 통해 사용자가 다양한 방식으로 클래스를 초기화 할 수 있도록 지원하고 있습니다. 유의할 부분은 생성자 오버로딩시 [매개변수의 타입,..공부와 정리를 위한 블로그
  • Table of Contents:
[Java 정리] 5. 생성자 오버로딩(Overloading) :: YoungQ
[Java 정리] 5. 생성자 오버로딩(Overloading) :: YoungQ

Read More

[Java] 오버로딩(Overloading), 생성자(Constructor), 초기화 :: pridiot

  • Article author: pridiot.tistory.com
  • Reviews from users: 46364 ⭐ Ratings
  • Top rated: 3.1 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about [Java] 오버로딩(Overloading), 생성자(Constructor), 초기화 :: pridiot 공부했던 자료 정리하는 용도입니다. 재배포, 수정하지 마세요. 오버로딩(Overloading) 한 클래스 내에 같은 이름의 메서드를 여러 개 정의하는 것을 … …
  • Most searched keywords: Whether you are looking for [Java] 오버로딩(Overloading), 생성자(Constructor), 초기화 :: pridiot 공부했던 자료 정리하는 용도입니다. 재배포, 수정하지 마세요. 오버로딩(Overloading) 한 클래스 내에 같은 이름의 메서드를 여러 개 정의하는 것을 … 공부했던 자료 정리하는 용도입니다. 재배포, 수정하지 마세요. 오버로딩(Overloading) 한 클래스 내에 같은 이름의 메서드를 여러 개 정의하는 것을 메서드 오버 로딩(Method Overloading)또는 간단히 오버로딩이..정리조아
  • Table of Contents:
[Java] 오버로딩(Overloading) 생성자(Constructor) 초기화

오버로딩(Overloading)

생성자(Constructor)

변수의 초기화

티스토리툴바

[Java] 오버로딩(Overloading), 생성자(Constructor), 초기화 :: pridiot
[Java] 오버로딩(Overloading), 생성자(Constructor), 초기화 :: pridiot

Read More

[JAVA/자바] 메소드/생성자 오버로딩(Overloading) : 네이버 블로그

  • Article author: m.blog.naver.com
  • Reviews from users: 23155 ⭐ Ratings
  • Top rated: 3.2 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about [JAVA/자바] 메소드/생성자 오버로딩(Overloading) : 네이버 블로그 생성자 또한 외부로부터 입력되는 다양한 값으로 초기화를 하기 위해서 사용된다. 위에서 설명한 내용을 토대로 오버로딩의 예제를 알아보자. …
  • Most searched keywords: Whether you are looking for [JAVA/자바] 메소드/생성자 오버로딩(Overloading) : 네이버 블로그 생성자 또한 외부로부터 입력되는 다양한 값으로 초기화를 하기 위해서 사용된다. 위에서 설명한 내용을 토대로 오버로딩의 예제를 알아보자.
  • Table of Contents:

카테고리 이동

JOKER’s ROOM

이 블로그 
오버로딩
 카테고리 글

카테고리

이 블로그 
오버로딩
 카테고리 글

[JAVA/자바] 메소드/생성자 오버로딩(Overloading) : 네이버 블로그
[JAVA/자바] 메소드/생성자 오버로딩(Overloading) : 네이버 블로그

Read More

자바 생성자(Constructor), 생성자 오버로딩(Constructor Overloading), 초기화 블록

  • Article author: developer-yeony.tistory.com
  • Reviews from users: 27517 ⭐ Ratings
  • Top rated: 3.7 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 자바 생성자(Constructor), 생성자 오버로딩(Constructor Overloading), 초기화 블록 생성자는 객체가 생성될 때 호출되는 멤버 변수 초기화 메소드이다. 생성자는 오버로딩이 가능하다. (오버로딩을 하면 자바 컴파일러는 기본 생성자를 … …
  • Most searched keywords: Whether you are looking for 자바 생성자(Constructor), 생성자 오버로딩(Constructor Overloading), 초기화 블록 생성자는 객체가 생성될 때 호출되는 멤버 변수 초기화 메소드이다. 생성자는 오버로딩이 가능하다. (오버로딩을 하면 자바 컴파일러는 기본 생성자를 … 자바 생성자(Constructor)에 대해서 알아보자. 생성자(Constructor) 생성자는 인스턴스가 생성될 때 호출되는 “인스턴트 변수 초기화 메소드”이다. 따라서 인스턴스 변수의 초기화 작업에 주로 사용되며, 인스턴스..
  • Table of Contents:

태그

‘언어공부Java’ Related Articles

티스토리툴바

자바 생성자(Constructor), 생성자 오버로딩(Constructor Overloading),  초기화 블록
자바 생성자(Constructor), 생성자 오버로딩(Constructor Overloading), 초기화 블록

Read More

HunIT Blog :: 자바(Java)〃생성자 오버로딩과 메소드 오버로딩

  • Article author: hunit.tistory.com
  • Reviews from users: 33657 ⭐ Ratings
  • Top rated: 5.0 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about HunIT Blog :: 자바(Java)〃생성자 오버로딩과 메소드 오버로딩 필드(객체)의 초기화가 아닌 생성자도 초기화 하고 싶을땐 생성자 오버로딩이란걸 사용하시면 됩니다. 필드와 변수에 대한글과 생성자의 조건+매개변수가 … …
  • Most searched keywords: Whether you are looking for HunIT Blog :: 자바(Java)〃생성자 오버로딩과 메소드 오버로딩 필드(객체)의 초기화가 아닌 생성자도 초기화 하고 싶을땐 생성자 오버로딩이란걸 사용하시면 됩니다. 필드와 변수에 대한글과 생성자의 조건+매개변수가 …   오버로딩이라면 그냥 한가지만 존재하는줄 알았는데 생성자를 공부하게 되면서 생성자 오버로딩과 메소드 오버로딩이 따로 있다는 것을 알게 되었고 이번 포스팅에서 정리하게 됬습니다. 학원에서 오버로딩과..Blog created by working as a developer since 2015.
  • Table of Contents:

자바(Java)〃생성자 오버로딩과 메소드 오버로딩

티스토리툴바

HunIT Blog :: 자바(Java)〃생성자 오버로딩과 메소드 오버로딩
HunIT Blog :: 자바(Java)〃생성자 오버로딩과 메소드 오버로딩

Read More

[자바/Java] 메소드 오버로딩, 생성자 오버로딩

  • Article author: hayden-archive.tistory.com
  • Reviews from users: 36508 ⭐ Ratings
  • Top rated: 3.3 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about [자바/Java] 메소드 오버로딩, 생성자 오버로딩 똑같은데 똑같지 않게 하는 방법. (오버로딩과 오버라이딩은 전혀 관련이 없다). 메소드 오버로딩(Method Overloading) 기법. < 메소드 오버로드의 ... ...
  • Most searched keywords: Whether you are looking for [자바/Java] 메소드 오버로딩, 생성자 오버로딩 똑같은데 똑같지 않게 하는 방법. (오버로딩과 오버라이딩은 전혀 관련이 없다). 메소드 오버로딩(Method Overloading) 기법. < 메소드 오버로드의 ... 오버로딩 = 중복선언. 똑같은데 똑같지 않게 하는 방법. (오버로딩과 오버라이딩은 전혀 관련이 없다)  메소드 오버로딩(Method Overloading) 기법 < 메소드 오버로드의 룰 > – Convention이 아닌 Rule! 안 지..
  • Table of Contents:

Hayden’s Archive

[자바Java] 메소드 오버로딩 생성자 오버로딩 본문

티스토리툴바

[자바/Java] 메소드 오버로딩, 생성자 오버로딩
[자바/Java] 메소드 오버로딩, 생성자 오버로딩

Read More


See more articles in the same category here: Top 673 tips update new.

Peemang IT Blog

반응형

1. 생성자(Constructor) 란?

1) 개념

객체를 생성할 때 new 키워드를 사용하게 되는데 이때 생성자를 호출하게 된다.

객체 생성할 경우 이외에는 호출할 수 없고, 멤버 변수 초기화 등 인스턴스를 초기화 하는 코드가 구현된다.

생성자 이름은 클래스 이름과 동일하고 반환 값이 없으며 상속되지 않는다.

private 변수는 다른 클래스 에서는 호출할 수 없지만 생성자를 호출할 경우 초기화가 가능하다.

1.1) Student.java

Student 클래스의 생성자를 생성하고 매개 변수로 학번과 이름을 받아온다고 가정했을 때 다음과 같다. (생성자 정의)

public class Student { public int studentID; //학번 public String studentName; //이름 public String address; //주소 public Student(int id, String name) { //생성자 생성 studentID = id; studentName = name; } }

1.2) StudentTest.java

인스턴스를 호출 할 때 매개 변수에 해당하는 값을 넣어준다. (생성자 호출)

주소 변수는 입력되지 않았기 때문에 인스턴스 생성 시 자동으로 Null 값이 들어간다.

public class StudentTest { public static void main(String[] args) { Student studentPark = new Student(1234,”피망”); //Park 객체 생성 //Park 객체에 대한 메서드 출력 studentPark.showStudentInfo(); } }

1.3) 출력 결과

2) 기본 생성자(default constructor)

하나의 클래스에는 반드시 하나 이상의 생성자가 존재해야 한다.

프로그래머가 생성자를 구현하지 않을 경우, 컴파일러가 자동으로 생성자 코드를 넣어준다.

다른 생성자가 있는 경우 기본 생성자는 제공되지 않고 기본 생성자는 매개 변수가 없고, 구현부가 존재하지 않다.

위에서 매개 변수를 받는 생성자를 만든 후 main 함수에서 인스턴스를 생성할 때 기본 생성자인 Student()를 호출할 경우 해당 생성자는 만들어지지 않았기 때문에 에러가 발생한다.

public class StudentTest { public static void main(String[] args) { Student studentPark = new Student(); //Park 객체 생성 (error 발생) } }

2. 생성자 오버로딩(Constructor Overloading) 이란?

1) 개념

학번, 이름을 받는 생성자를 이전에 만들었는데, 해당 생성자가 아닌 학번 또는 이름만 입력 받거나 전부다 입력받는 생성자를 만들고자 할 때 생성자 명은 클래스 명과 동일하기 때문에 매개 변수가 다른 똑같은 이름의 생성자들을 여러개 만들어 줘야 한다.

이처럼 생성자를 두 개 이상 구현하는 경우를 생성자 오버로딩이라고 부른다.

1.1) Student.java

Student 클래스 안에 매개 변수가 다른 동일한 이름의 생성자를 생성하였다.

public class Student { public int studentID; //학번 public String studentName; //이름 public String address; //주소 public Student(int id, String name) { studentID = id; studentName = name; } public Student(String name) { studentName = name; } }

1.1) StudentTest.java

메인 함수에서 객체를 생성할 경우 Student.java에서 2개의 생성자를 만들었기 때문에 해당 생성자에 맞는 매개변수를 대입하여 객체를 생성할 수 있다.

public class StudentTest { public static void main(String[] args) { Student studentPark = new Student(1234,”피망”); //Park 객체 생성 Student studentKim = new Student(“사과”); } }

3. O,X QUIZ

Question 1: 생성자는 클래스를 통해 객체를 생성하고 객체의 필드 값을 초기화 할 수 있다.

Question 2: 생성자는 메소드이기 때문에 반환 타입을 적어야 한다.

Question 3: 클래스에 생성자가 없는 경우에는 객체를 생성할 수 없다.

정답 보기

더보기 Question 1: O 클래스에서 객체를 생성할 때 new 키워드를 사용하여 생성자를 생성하고 생성자를 통해 멤버 변수의 값을 초기화 한다. Question 2: X 생성자는 매개 변수는 존재할 수 있지만 반환 값은 존재하지 않는다. Question 3: X 클래스에 생성자가 없는 경우 디폴트 생성자가 자동으로 생성되어 객체를 생성할 수 있다.

반응형

자바(Java) – 생성자 (Constructor)2

728×90

반응형

생성자 오버로딩(overloading)

매개 변수를 달리하는 생성자를 여러개 선언하는 것

외부에서 제공되는 다양한 데이터를 사용하여 객체를 초기화하려면 생성자 역시 다양 해야한다

public class 클래스{ 클래스([타입 매개변수, …]){ } //위와 아래는 생성자 오버로딩 //매개변수의 타입, 개수, 순서를 다르게 선언한다. 클래스([타입 매개변수, …]){ } }

예시1) 생성자 오버로딩

public class Car{ Car() { … } Car(String model) { … } Car(String model, String color) { … } Car(String model, String color, int speed) { … } }

생성자 오버로딩 시 주의할 점,

매개 변수의 타입과 개수 그리고 선언된 순서가 똑같을 경우 매개 변수 이름만 바꾸는 것은 생성자 오버로딩이 아니다.

//오버로딩이 아니다. Car(String model, int speed) { … } Car(int speed, String model) { … }

생성자가 오버로딩되어 있는 경우 new연산자로 생성자를 호출할 때 제공되는 매개값의 타입과 수에 의해 호출될 생성자가 결정 된다.

예시2) 생성자 오버로딩

public class Car { // 필드 String company = “현대차”; String model; String color; int maxSpeed; // 생성자 1 Car() { // 기본 생성자 } // 생성자 2 Car(String model) { this.model = model; } // 생성자 3 Car(String model, String color) { this.model = model; this.color = color; } // 생성자 4 Car(String model, String color, int maxSpeed) { this.model = model; this.color = color; this.maxSpeed = maxSpeed; } }

public class CarEx { public static void main(String[] args) { // 생성자 1 호출 Car Car1 = new Car(); System.out.println(“car1.company: ” + Car1.company); System.out.println(); // 생성자 2 호출 Car Car2 = new Car(“자가용”); System.out.println(“car2.company: ” + Car2.company); System.out.println(“car2.model: ” + Car2.model); System.out.println(); // 생성자 3 호출 Car Car3 = new Car(“대형차”, “회색”); System.out.println(“car3.company: ” + Car3.company); System.out.println(“car3.model: ” + Car3.model); System.out.println(“car3.color: ” + Car3.color); System.out.println(); // 생성자 4 호출 Car Car4 = new Car(“택시”, “검정”, 200); System.out.println(“car4.company: ” + Car4.company); System.out.println(“car4.model: ” + Car4.model); System.out.println(“car4.color: ” + Car4.color); System.out.println(“car4.color: ” + Car4.maxSpeed); System.out.println(); } }

다른 생성자 호출: this( )

생성자 오버로딩 증가 시 중복 코드 발생할 수 있다.

이를 해결 하기 위해 생성자에서 다른 생성자를 호출할 때에 this()코드를 사용 한다.

필드 초기화 내용을 한 생성자에만 집중 작성하고 나머지 생성자는 초기화 내용을 가진 생성자로 호출을 한다.

클래스([매개변수, … ]){ this(매개변수, …, 값, ..); //클래스의 다른 생성자 호출 실행문; }

this()는 자신의 다른 생성자를 호풀하는 코드로 반드시 생성자 첫 줄에서만 허용 된다.

예시3) 중복 코드 제거

public class Car { // 필드 String company = “현대차”; String model; String color; int maxSpeed; // 생성자 1 Car() { // 기본 생성자 } // 생성자 2 Car(String model) { // 생성자 4 호출 this(model, “은색”, 250); } // 생성자 3 Car(String model, String color) { // 생성자 4 호출 this(model, color, 250); } // 생성자 4 Car(String model, String color, int maxSpeed) { this.model = model; this.color = color; this.maxSpeed = maxSpeed; } }

public class CarEx { public static void main(String[] args) { // 생성자 1 호출 Car Car1 = new Car(); System.out.println(“car1.company: ” + Car1.company); System.out.println(); // 생성자 2 호출 Car Car2 = new Car(“자가용”); System.out.println(“car2.company: ” + Car2.company); System.out.println(“car2.model: ” + Car2.model); System.out.println(); // 생성자 3 호출 Car Car3 = new Car(“대형차”, “회색”); System.out.println(“car3.company: ” + Car3.company); System.out.println(“car3.model: ” + Car3.model); System.out.println(“car3.color: ” + Car3.color); System.out.println(); // 생성자 4 호출 Car Car4 = new Car(“택시”, “검정”, 200); System.out.println(“car4.company: ” + Car4.company); System.out.println(“car4.model: ” + Car4.model); System.out.println(“car4.color: ” + Car4.color); System.out.println(“car4.color: ” + Car4.maxSpeed); System.out.println(); } }

※용어 정리

오버로딩: 매개 변수를 달리하는 생성자를 여러개 선언하는 것

매개 변수를 달리하는 생성자를 여러개 선언하는 것 this(): 객체 자신의 또 다른 생성자를 호출할 때 사용

본 내용은 #혼자공부하는자바 책을 참고해 공부하려 작성했습니다.

728×90

반응형

[Java] 오버로딩(Overloading), 생성자(Constructor), 초기화

공부했던 자료 정리하는 용도입니다.

재배포, 수정하지 마세요.

오버로딩(Overloading)

한 클래스 내에 같은 이름의 메서드를 여러 개 정의하는 것을 메서드 오버 로딩(Method Overloading)또는 간단히 오버로딩이라고 한다.

오버로딩의 조건과 장점

오버로딩의 조건 1. 메서드 이름이 같아야 한다.

2. 매개변수의 개수 또는 타입이 달라야 한다.

오버로딩된 메서드들은 매개변수에 의해서만 구별될 수 있고 반환 값으로는 안된다.

int add(int x, int y){ return x + y; } int add(double x, double y){ return x + y; } //매개변수의 순서가 다른경우에도 오버로딩으로 간주한다 long add(int x, long y){ return x + y; } long add(long x, int y){ return x + y; }

예를 들어 매개변수를 서로 더하는 add( ) 메서드를 만들 때 매개변수의 타입이 정수형이냐 실수형이냐에 따라 함수를 다른 이름으로 한다면 복잡하고 사용하기도 불편할 것이다. 그럴 때 위의 코드처럼 오버로딩을 한다면 함수 이름 하나로 여러 가지 입력을 받을 수 있게 만들 수 있다. 이처럼 같은 일을 하지만 매개변수를 달리해야 하는 경우에 오버 로딩을 구현한다.

가변인자(varargs)와 오버로딩

기존에는 메서드의 매개변수가 고정이었으나 JDK1.5부터 동적으로 지정해 줄 수 있게 되었다. 이 기능을 가변 인자(variable arguments)라고 한다. 가변 인자는 타입… 변수명 과 같은 형식으로 선언하고 가변 인자 외에도 매개변수가 더 있다면 가변 인자를 제일 마지막에 선언해야 한다. 가변 인자를 사용하면 인자가 아예 없어도 되고 배열도 인자가 될 수 있다. 가변 인자는 내부적으로 배열을 이용하는 것이기 때문에 가변 인자가 선언된 메서드를 호출할 때마다 배열이 새로 생성되어 비효율적인 면이 있고, 가변 인자를 선언한 메서드를 오버 로딩하면 구별되지 못하는 경우가 발생하기 쉽기 때문에 주의해야 한다. 가급적 필요할 때만 사용하는 것이 좋다.

생성자(Constructor)

클래스이름(타입 변수명, 타입 변수명, …){ // 인스턴스 생성시 수행될 코드, 주로 인스턴스 변수의 초기화 코드를 적는다. } //예시 class Student{ Student(){ //생성자 … } Student(String name, int num){ //생성자, 오버로딩이 가능하다. .. } }

생성자의 조건 1. 생성자의 이름은 클래스의 이름과 같아야 한다.

2. 생성자는 리턴 값이 없다.

생성자는 인스턴스가 생성될 때 호출되는 ‘인스턴스 초기화 메서드’이다. 인스턴스 변수의 초기화 작업에 주로 사용되며 인스턴스 생성 시에 실행되어야 할 작업을 위해서도 사용된다. 생성자 역시 메서드처럼 클래스 내에 선언되며, 구조도 메서드와 유사하지만 리턴 값이 없다는 점이 다르다. 리턴 값이 없다고 void 를 쓰지도 않고 그냥 아무것도 안 적는다. 생성자도 오버 로딩이 가능하므로 하나의 클래스에 여러 개의 생성자가 존재할 수 있다. 인스턴스를 생성하기 위해 사용하는 클래스이름( ) 이 바로 생성자이다. 연산자 new 가 인스턴스를 생성하는 것이지 생성자가 인스턴스를 생성하는 것이 아니다.

1. 기본 생성자(Default Constructor)

클래스이름() { }

모든 클래스에는 반드시 하나이상의 생성자가 정의되어있어야 한다. 컴파일할 때 소스파일(*. java)의 클래스에 생성자가 하나도 정의되지 않은 경우 컴파일러는 자동적으로 위와 같이 매개변수도 없고 내용도 없는 기본 생성자를 추가하여 컴파일한다. 주의할 점은 컴파일러가 자동으로 기본 생성자를 추가해주는 경우는 클래스 내에 생성자가 하나도 없을 때뿐이라는 것이다.

2. 매개변수가 있는 생성자

생성자도 오버 로딩이 가능해서 기본 생성자처럼 매개변수도 없고 내용도없는 기본 생성자도 있지만 매개변수를 가지고 인스턴스를 원하는 값으로 초기화시켜주는 생성자도 있다. 인스턴스를 생성한 다음에 인스턴스 변수의 값을 변경하는 것보다 매개변수를 갖는 생성자를 사용하는 것이 코드를 보다 간결하고 직관적으로 만든다. 클래스를 작성할 때 다양한 생성자를 제공함으로써 인스턴스 생성 후에 별도로 초기화를 하지 않아도 되도록 하는 것이 바람직하다.

생성자에서 다른 생성자 호출하기 – this( ), this

같은 클래스 멤버들 간에 서로 호출할 수 있는 것처럼 생성자 간에도 서로 호출이 가능하다. 하지만 아래의 두 가지 조건을 만족시켜야 한다.

1. 생성자의 이름으로 클래스이름대신 this 를 사용한다.

2. 한 생성자에서 다른 생성자를 호출할 때는 반드시 첫 줄에서만 호출이 가능하다.

생성자에서 다른 생성자를 첫 줄에서만 호출이 가능하도록 한 이유는 생성자 내에서 초기화 작업 도중에 다른 생성자를 호출하게 되면 호출된 다른 생성자 내에서도 멤버 변수들의 값을 초기화를 해버리므로 다른 생성자를 호출하기 이전의 초기화 작업이 무의미해질 수 있기 때문이다.

Student(String name, int num){ this.name = name; //this는 참조변수로 인스턴스 자신을 가리킨다. this.num = num; }

생성자의 매개변수로 인스턴스 변수들의 초기값을 제공받는 경우가 많기 때문에 매개변수와 인스턴스 변수의 이름이 일치하는 경우가 자주 있다. 이때는 this 를 사용해서 구별해 주는 것이 좋다. this 는 참조 변수로 인스턴스 자신을 가리킨다. this 로 인스턴스 변수에 접근할 수 있다. 또한 this 는 인스턴스 멤버만 사용할 수 있다. static메서드(클래스 메서드)에서는 인스턴스 멤버들을 사용할 수 없는 것처럼 this 역시 사용할 수없다.(static메서드는 인스턴스를 생성하지 않고도 호출될 수 있기 때문에 static메서드가 호출된 시점에 인스턴스가 존재하지 않을 수도 있기 때문이다.)

this 와 this( ) 요약 this : 인스턴스 자신을 가리키는 참조 변수, 인스턴스의 주소가 저장되어있다.

모든 인스턴스 메서드에 지역변수로 숨겨진 채로 존재한다.

this( ), this(매개변수) : 생성자, 같은 클래스의 다른 생성자를 호출할 때 사용한다.

생성자를 이용한 인스턴스의 복사

Student(Student s){ name = s.name; number = s.number; }

현재 사용하고 있는 인스턴스와 같은 상태(모든 인스턴스 변수가 동일한 값을 갖는 것)를 갖는 인스턴스를 하나 더 만들고자 할 때 생성자를 이용할 수 있다. 위의 코드는 매개변수로 넘겨진 참조 변수가 가리키는 Student 인스턴스의 인스턴스 변수인 name , number 을 인스턴스 자신으로 복사하는 것이다.

인스턴스를 생성할 때 고려해야 할 점 1. 클래스 – 어떤 클래스의 인스턴스를 생성할 것인가?

2. 생성자 – 선택한 클래스의 어떤 생성자로 인스턴스를 생성할 것인가?

변수의 초기화

변수를 선언하고 값을 지정하는 것을 변수의 초기화라고 한다. 멤버 변수는 초기화를 하지 않아도 자동적으로 변수의 자료형에 맞는 기본값으로 초기화되지만 지역변수는 사용하기 전에 반드시 초기화를 해야 한다.

[참고] 각타입의 기본값(default value)

자료형 기본값 boolean false char ‘\u0000’ byte, short, int 0 long 0L float 0.0f double 0.0d 또는 0.0 참조형변수 null

1. 명시적 초기화

변수를 선언과 동시에 초기화하는 것을 명시적 초기화라고 한다. 간단하지만 복잡한 초기화 작업이 필요할 때는 초기화블럭(initialization block)또는 생성자를 사용해야 한다.

2. 초기화 블럭(initialization block)

클래스 초기화 블럭 : 클래스변수의 복잡한 초기화에 사용된다.

인스턴스 초기화 블럭 : 인스턴스변수의 복잡한 초기화에 사용된다.

클래스 초기화 블럭은 클래스가 메모리에 처음 로딩될 때 한번만 수행되며, 인스턴스 초기화 블럭은 생성자와 같이 인스턴스를 생성할 때 마다 수행된다. 또한 인스턴스 초기화블럭은 생성자보다 먼저 수행된다. 보통 인스턴스 변수의 초기화는 주로 생성자를 사용하고, 인스턴스 초기화 블럭은 모든 생성자에서 공통적으로 수행되어야 하는 코드를 넣는데 사용한다.

class Student{ static { //블럭앞에 static을 붙이면 클래스 초기화 블럭이 된다. //클래스 초기화 블럭 } { //인스턴스 초기화 블럭 } }

블럭 { } 앞에 static 이 붙으면 클래스 초기화블럭이 되고 붙지않으면 인스턴스 초기화 블럭이 된다.

멤버 변수의 초기화 시기와 순서

클래스변수의 초기화 시점 : 클래스가 처음 로딩될때 단 한번 초기화

인스턴스 변수의 초기화 시점 : 인스턴스가 생성될때마다 각각의 인스턴스별로 초기화

클래스변수의 초기화 순서 : 기본값 → 명시적초기화 → 클래스 초기화 블럭

인스턴스변수의 초기화 순서 : 기본값 → 명시적초기화 → 인스턴스 초기화 블럭 → 생성자

So you have finished reading the 생성자 오버로딩 topic article, if you find this article useful, please share it. Thank you very much. See more: C++ 생성자, 기본 생성자, 프로그래밍 생성자, 메소드 오버로딩, 생성자 역할, 자바 생성자 호출, 자바 오버로딩

Leave a Comment