관리 메뉴

개발하는 동그리

[Java] 생성자(Constructor) 란? 본문

IT 정보/Java

[Java] 생성자(Constructor) 란?

개발하는 동그리 2022. 5. 10. 18:23
반응형

 

생성자란?

인스턴스가 생성될 때 호출되는 것이 인스턴스 초기화 메서드다. 

  • 인스턴스 생성을 담당하는 것 : new 키워드 생성자가 인스턴스를 만드는 것이 아니다. 
  • 생성자는 인스턴스의 변수를 초기화 하는데 사용되는 특수한 메서드다.
  • 매개변수는 있을 수도 있고 없을 수도 있다.
  • 생성자를 생략하면 컴파일러가 자동으로 기본생성자(Defalut Constructor)를 생성해준다. 
  • 생성자를 생성했을 때 기본생성자는 자동으로 만들어 지지 않는다. 따라서 필요하다면 따로 생성해야한다. 
  • 생성자를 사용하면 많은 인스턴스를 생성할 때 훨씬 편하게 코딩이 가능하다 

 

 

<생성자 미 사용>

public class Main {
    public static void main(String[] args) {



          dog dog1 = new dog();
          dog1.name = "푸들";
          dog1.age  = 2;

          dog dog2 = new dog();
          dog2.name = "초코";
          dog2.age  = 4;

          dog dog3 = new dog();
          dog3.name = "딸기";
          dog3.age  = 1;


//        dog dog1 = new dog("푸들",2 );
//        dog dog2 = new dog("초코",4 );
//        dog dog3 = new dog("딸기",1 );


        System.out.println("강아지의 이름은" + dog1.name + "이고, 나이는 " + dog1.age + " 살 입니다.");
        System.out.println("강아지의 이름은" + dog2.name + "이고, 나이는 " + dog2.age + " 살 입니다.");
        System.out.println("강아지의 이름은" + dog3.name + "이고, 나이는 " + dog3.age + " 살 입니다.");
    }
}
class dog {
   
      String name;
      int age;
    
//      dog(String name, int age) {
//        this.name = name;
//        this.age = age;
    }
}

 

 

 

<생성자 사용시>

public class Main {
    public static void main(String[] args) {



//          dog dog1 = new dog();
//          dog1.name = "푸들";
//          dog1.age  = 2;
//
//          dog dog2 = new dog();
//          dog2.name = "초코";
//          dog2.age  = 4;
//
//          dog dog3 = new dog();
//          dog3.name = "딸기";
//          dog3.age  = 1;


        dog dog1 = new dog("푸들",2 );
        dog dog2 = new dog("초코",4 );
        dog dog3 = new dog("딸기",1 );


        System.out.println("강아지의 이름은" + dog1.name + "이고, 나이는 " + dog1.age + " 살 입니다.");
        System.out.println("강아지의 이름은" + dog2.name + "이고, 나이는 " + dog2.age + " 살 입니다.");
        System.out.println("강아지의 이름은" + dog3.name + "이고, 나이는 " + dog3.age + " 살 입니다.");
    }
}
class dog {
   
      String name;
      int age;
    
      dog(String name, int age) {
      this.name = name;
      this.age = age;
    }
}

 

생성자와 메서드 

  • 공통점
    • 비슷한 구조를 가진다.
    • 오버로딩이 가능하다. 
  • 차이점
    • 생성자와 클래스의 이름이 반드시 같아야 한다. ( 그렇지 않으면 생성자로서 기능을 수행할 수 없다. )
    • 생성자는 리턴타입이 존재하지 않기 때문에 void 키워드를 사용하지 않는다. 
    • 상속이 되지 않는다!?  

 

기본 생성자

- new 키워드를 사용하여 생성자를 호출하고 객체를 만든다. 

- 모든 클래스에는 생성자가 반드시 하나이상 존재 해야하고, 기본생성자란 매개변수가 없는 생성자를 말한다.
ex). 클래스명() {}

 

매개변수가 있는 생성자

매개변수가 있는 생성자는 메서드처럼 매개변수를 호출해서 해당값을 받아 인스턴스를 초기화 하는데 사용된다.
고유한 특성을 가진 인스턴스를 계속 만들어야 하는 경우 인스턴스마다 각기 다른 값을 가지고 초기화 할 수 있어서 매우 유용하다. 
 

 

 

 

 

반응형