[JAVA] 객체지향 - 생성자

2024. 8. 31. 19:50·Back-End/Java

[작성일: 2023. 01. 25]

 

 

생성자(Constructor)

  • 인스턴스가 생성될 때마다 호출되는 인스턴스 초기화 메서드
  • 객체(iv묶음) 초기화 메서드
  • {} 괄호 안에 작업할 문장을 넣으면 됨.
  • 번거로운 과정을 직관적으로, 편리하게 초기화할 수 있음.
* 기존 초기화
Time t = new Time();
t.hour = 12;
t.minute = 34;
t.second = 56;


* 생성자 호출(사용) 
Time t = new Time(12, 34, 56); // 생성자를 만들어줘야 사용할 수 있음.
  • 생성자의 이름과 클래스 이름이 같아야 함.
  • 생성자인 경우는 반환값이 없기 때문에 리턴값이 없음. (void 안 붙임)
  • 모든 클래스는 반드시 1개 이상의 생성자를 가져야 함.
    • Card c = new Card(); ➡️ 생성자 호출(기본 생성자)
    • 생성자가 하나도 없을 땐 컴파일러가 자동으로 추가해 줌.
클래스 이름(타입 변수명, 타입 변수명, ...) {
  // 인스턴스 생성 시 수행될 코드,
  // 주로 인스턴스 변수의 초기화 코드를 적음.
}

class Card { // 클래스 이름은 Card
  ...
  Card() { //매개변수 없는 생성자.
  // 인스턴스 초기화 작업
  }
    
  Card(String kind, int number) { // 매개변수 있는 생성자
    // 인스턴스 초기화 작업
  }
}

// 생성자 오버로딩
// 같은 이름의 (생성자)메서드 여러 개 정의

 

 

 

 

 

기본 생성자(Default Constructor)

  • 매개변수가 없는 생성자
클래스 이름() {} // 기본 생성자
Point() {}    // Point 클래스의 기본 생성자
  • 생성자가 하나도 없을 때만, 컴파일러가 자동으로 추가해줌.
  • 웬만하면 기본 생성자를 직접 만들어주는 것이 좋음.

 

  💡 기본 생성자 작성 습관 만들기!

class Data_1 {
  int value;
  // Data_1() {} // 기본 생성자를 컴파일러가 자동 생성해줌.
}

class Data_2 {
  int value
    
  // Data_2() {} // 기본 생성자를 추가해야 에러가 안 뜸.
    
  Data_2(int x) { // 매개변수가 있는 생성자
    value = x;
  }
}

class Ex6_11 {
  public static void main(String[] args) {
    Data_1 d1 = new Data_1();
    Data_1 d2 = new Data_2(); // 기본 생성자 호출, 컴파일 에러 발생
    // The constructor Data_2()) is undefined
  }
}

 

 

 

 

 

매개변수가 있는 생성자

class Car {
  String color;		// 색상
  String gearType;	// 변속기 종류
  int door;			// 문 갯수
  // iv
    
  Car() {} // 기본 생성자
  Car(String c, string g, int d) { // 매개변수가 있는 생성자
    color = c;
    gearType = g;
    door = d;
  }
}

생성자가 없으면 하나하나 초기화해줘야 함.
// iv 초기화
Car c = new Car();
c.color = "WHITE";
c.gearType = "AUTO";
c.door = 4;

⬇

생성자 호출
Car c = new Car("white", "auto", 4);

 

 

 

Study

  1. 참조변수 c가 만들어짐.
  2. new 연산자가 클래스를 보고 객체 3개를 생성함.
  3. Car 생성자가 호출됨. (객체 초기화)
  4. Car(String c, String g, int d)에 저장됨.
  5. color = c;
  6. gearType = g;
  7. door = d; 에 들어감
  8. 6. c에 대입

 

 

 

 

 

 

 

 

 

 


🐣 해당 게시글은 자바의 정석(남궁성 님) 영상으로 함께 공부하며 요약/정리한 글입니다.
🐣 입문 개발자가 작성한 글이므로 틀린 내용이나 오타가 있을 수 있습니다.

 

저작자표시 비영리 변경금지 (새창열림)
'Back-End/Java' 카테고리의 다른 글
  • [JAVA] 객체지향 - super
  • [JAVA] 객체지향 - 상속, 포함
  • [JAVA] 객체지향 - 매개변수
  • [JAVA] 객체지향 - 호출 스택
뚜비
뚜비
1년차 백엔드&iOS 개발자의 감자 탈출 블로그 🥔🥔
  • 뚜비
    뚜비의 개발로그
    뚜비
  • 전체
    오늘
    어제
  • 글쓰기     관리
    • Devlog
      • Back-End
        • Java
        • Spring
        • JPA
        • HTTP
        • Security
        • Back-End
        • Front-End
      • 알고리즘
      • iOS
        • Swift
      • Database
      • Tips
        • Git & GitHub
        • A to Z
      • 프로젝트
      • 생각정리
  • 태그

    최주호
    Java
    객체
    Database
    Security
    백준
    의존성주입
    프로그래머스
    자바스크립트
    MVC
    스프링
    javascript
    DB
    데이터베이스
    김영한
    자바
    Swift
    spring
    HTTP
    변수
    다형성
    성능최적화
    JPA
    jsp
    Spring Security
    알고리즘
    html
    sql
    게시판만들기
    생성자
  • hELLO· Designed By정상우.v4.10.0
뚜비
[JAVA] 객체지향 - 생성자
상단으로

티스토리툴바