Java Constructor

2023. 3. 31. 15:01·📘 Backend/Java

📘 생성자

인스턴스 생성시 호출되는 인스턴스 변수 초기화 메서드

  • 이름은 반드시 클래스의 이름과 동일해야함
  • 생성자 = 메소드
  • 호출되는 시점 = 인스턴스 생성 시
  • 목적 = 인스턴스 변수 초기화
  • 리턴 타입이 아예 없음 (void와는 다른 동작방식)
  • 오버로딩 가능

기본 형식

클래스명(매개변수) { // 생성자 기본 구조 , 매개변수는 있을수도,없을수도 있음 

...

}


기본 생성자 vs 매개변수가 있는 생성자

모든 클래스에는 반드시 하나 이상의 생성자가 존재해야함


기본생성자

매개변수가 없는 생성자를 의미한다

ex)

  • 클래스명(){} // 기본생성자
  • DefaultConst(){} // 예시) DefaultConst 클래스의 기본생성자

매개변수가 있는 생성자

  • 메소드처럼 매개변수 호출 시 해당 값을 받아 인스턴스를 초기화
  • 고유한 특성의 인스턴스를 계속 생성해야 할 때 인스턴스마다 각각 다른 값을 가지고 초기화 가능

ex) 인스턴스 생성 후 인스턴스의 필드값을 일일이 설정해줄 필요없이 생성과 동시에 값 설정 가능

public class ConstructorExample {
    public static void main(String[] args) {
        Car c = new Car("Model X", "빨간색", 250);

or Cat aru = new Cat(name: "아루", age: 10);
        System.out.println("제 차는 " + c.getModelName() + "이고, 컬러는 " +  c.getColor() + "입니다.");    }
}

class Car {
    private String modelName;
    private String color;
    private int maxSpeed;

    public Car(String modelName, String color, int maxSpeed) {
        this.modelName = modelName;
        this.color = color;
        this.maxSpeed = maxSpeed;
    }

    public String getModelName() {
        return modelName;
    }

    public String getColor() {
        return color;
    }
}

//Output
제 차는 Model X이고, 컬러는 빨간색입니다.

생성자 오버로딩

public class ConstructorExample {
  public static void main(String[] args) {
    Constructor constructor1 = new Constructor();
    Constructor constructor2 = new Constructor("Hello World");
    Constructor constructor3 = new Constructor(5,10);
  }
}

class Constructor {
  Constructor() { // (1) 생성자 오버로딩
    System.out.println("1번 생성자");
  }

  Constructor(String str) { // (2) 생성자 오버로딩
    System.out.println("2번 생성자");
  }

  Constructor(int a, intb) { // (3) 생성자 오버로딩
    System.out.println("3번 생성자");
  }
}
저작자표시 (새창열림)

'📘 Backend > Java' 카테고리의 다른 글

Java 객체 지향 프로그래밍 - 1  (0) 2023.04.01
Java This & Inner Class  (0) 2023.04.01
Java Static  (0) 2023.03.31
Java Class 구조  (0) 2023.03.31
Java Array  (0) 2023.03.31
'📘 Backend/Java' 카테고리의 다른 글
  • Java 객체 지향 프로그래밍 - 1
  • Java This & Inner Class
  • Java Static
  • Java Class 구조
신건우
신건우
조용한 개발자
  • 신건우
    우주먼지
    신건우
  • 전체
    오늘
    어제
    • 분류 전체보기 (422)
      • 📘 Frontend (71)
        • Markup (1)
        • Style Sheet (2)
        • Dart (8)
        • Javascript (12)
        • TypeScript (1)
        • Vue (36)
        • React (2)
        • Flutter (9)
      • 📘 Backend (143)
        • Java (34)
        • Concurrency (19)
        • Reflection (1)
        • Kotlin (29)
        • Python (1)
        • Spring (42)
        • Spring Cloud (5)
        • Message Broker (5)
        • Streaming (2)
        • 기능 개발 (5)
      • 💻 Server (6)
        • Linux (6)
      • ❌ Error Handling (11)
      • 📦 Database (62)
        • SQL (31)
        • NoSQL (2)
        • JPQL (9)
        • QueryDSL (12)
        • Basic (4)
        • Firebase (4)
      • ⚙️ Ops (57)
        • CS (6)
        • AWS (9)
        • Docker (8)
        • Kubernetes (13)
        • MSA (1)
        • CI & CD (20)
      • 📚 Data Architect (48)
        • Data Structure (10)
        • Algorithm (8)
        • Programmers (17)
        • BaekJoon (5)
        • CodeUp (4)
        • Design Pattern (4)
        • AI (0)
      • ⚒️ Management & Tool (8)
        • Git (7)
        • IntelliJ (1)
      • 📄 Document (10)
        • Project 설계 (6)
        • Server Migration (3)
      • 📄 책읽기 (2)
        • 시작하세요! 도커 & 쿠버네티스 (2)
      • 🎮 Game (4)
        • Stardew Vally (1)
        • Path of Exile (3)
  • 블로그 메뉴

    • 링크

      • Github
    • 공지사항

    • 인기 글

    • 태그

      Lock #Thread #Concurrency
      GStreamer #Pipeline
      React #Markdown
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.0
    신건우
    Java Constructor
    상단으로

    티스토리툴바