국비과정 공부내용/Java (11월24일~12월10일)

#7. 생성자와 오버로딩 (Constructor & OverLoading)

CEJ_0929 2021. 12. 12. 16:42

1. 생성자란?

  : 초기화의 목적

  : 클래스를 생성할때 제일 먼저 실행되는 메서드
    생성자는 메서드 명이 클래스 명과 동일하다.

  : 그러나!!!!!

  메서드와 같은 기능을 가지고 있지만,

  리턴이 없으며. 리턴 타입도 없다.

  따라서 메서드라고 부르지 않는다.

 

 

2. 생성자의 종류

  1) 매개 변수가 없는 Default (디폴트) 생성자. or 기본생성자.

 

       필자는 #5 Class 편에서 생성자를 만들지 않았다.

       그런데 어떻게 가장 먼저 실행된다는 거지?

       바로 이렇게 실행된다!

 

눈에 보이지 않지만 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

선언과 동시에 name과 age의 값을 초기화 할 수 있다.

 

 

 

3.  생성자 사용시 주의사항

  : 매개변수 생성자를 선언했다면 특별한 경우가 아니라면 기본생성자를 함께 적어주자.

    매개변수 생성자를 선언한 순간 생략되어있던 기본생성자는 사라진다.

    이 경우 Main 사용부분에서 Person p = new Person(); 은 오류가 발생된다.

 

  : 생성자는 리턴타입을 가질 수 없다.

  : 생성과 동시에 실행할 다양한 명령을 포함할 수 있다. (출력, 초기화 등)

 

 

 

4. 오버로딩 (OverLoading)

 : 같은 이름의 메서드라도 매개변수의 갯수 혹은 매개변수의 타입이 다르면 선언이 가능하다.

 : 위 Person 클래스에서 매개변수 생성자는 name과 age 모두를 초기화 하고 있다.

 : 여기에 를 쓸 수도 있다.

 : 오버로딩은 JAVA 객체지향에서 '다형성'을 구현하는 핵심 기능중 하나이다.

 : 오버로딩을 활용하여 Person 클래스의

   기본생성자 + 이름만 받는 생성자+ 나이만 받는 생성자 + 이름과 나이를 다 받는 생성자

   로 구분하여 사용할 수 있게 된다. 

   (Person(String name) { this.name = name; }   이라는 name만 초기화 하는 생성자)