#7. 생성자와 오버로딩 (Constructor & OverLoading)
1. 생성자란?
: 초기화의 목적
: 클래스를 생성할때 제일 먼저 실행되는 메서드
생성자는 메서드 명이 클래스 명과 동일하다.
: 그러나!!!!!
메서드와 같은 기능을 가지고 있지만,
리턴이 없으며. 리턴 타입도 없다.
따라서 메서드라고 부르지 않는다.
2. 생성자의 종류
1) 매개 변수가 없는 Default (디폴트) 생성자. or 기본생성자.
필자는 #5 Class 편에서 생성자를 만들지 않았다.
그런데 어떻게 가장 먼저 실행된다는 거지?
바로 이렇게 실행된다!
이렇게 생략되어있기 때문에 MainMethod 에서
Person 영수 = new Person(); 했을 때
Person(); 부분을 통해 Person클래스가 초기화 되는 것이다.
기본생성자의 경우 다른 목적은 없으며 해당 클래스를 초기화하는 목적만을 수행한다.
-------------------------------------------------------------------------------------------------
2) 매개변수 생성자 _ 아래 코드를 참고하자.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
public class Person {
String name;
int age;
/* 매개변수 생성자
메인메서드에서 name과 age를 전달받아서
해당 객체의 name과 age에 초기화 해준다.
*/
Person(String n, int a){
name = n;
age = a;
}
//========메인 메서드===========================
public static void main(String[] args) {
Person p = new Person("홍길동",20);
System.out.println(p.name);
System.out.println(p.age);
}
}
|
cs |
3. 생성자 사용시 주의사항
: 매개변수 생성자를 선언했다면 특별한 경우가 아니라면 기본생성자를 함께 적어주자.
매개변수 생성자를 선언한 순간 생략되어있던 기본생성자는 사라진다.
이 경우 Main 사용부분에서 Person p = new Person(); 은 오류가 발생된다.
: 생성자는 리턴타입을 가질 수 없다.
: 생성과 동시에 실행할 다양한 명령을 포함할 수 있다. (출력, 초기화 등)
4. 오버로딩 (OverLoading)
: 같은 이름의 메서드라도 매개변수의 갯수 혹은 매개변수의 타입이 다르면 선언이 가능하다.
: 위 Person 클래스에서 매개변수 생성자는 name과 age 모두를 초기화 하고 있다.
: 여기에 를 쓸 수도 있다.
: 오버로딩은 JAVA 객체지향에서 '다형성'을 구현하는 핵심 기능중 하나이다.
: 오버로딩을 활용하여 Person 클래스의
기본생성자 + 이름만 받는 생성자+ 나이만 받는 생성자 + 이름과 나이를 다 받는 생성자
로 구분하여 사용할 수 있게 된다.
(Person(String name) { this.name = name; } 이라는 name만 초기화 하는 생성자)