My Melody Is Cute JAVA 기초7 객체지향프로그래밍 기초
본문 바로가기

개발공부🌷/JAVA

JAVA 기초7 객체지향프로그래밍 기초

  • 생성자의 핵심 개념과 기본 문법을 이해하고 사용할 수 있다.
  • 생성자가 메서드와 구분되는 두 가지 차이를 이해하고 설명할 수 있다.
  • 메서드 오버로딩이 생성자에서 어떻게 구현될 수 있는지 확인하고 이해할 수 있다.
  • 기본 생성자와 매개변수가 있는 생성자의 차이를 설명할 수 있다.
  • this와 this()의 차이에 대해 설명할 수 있다.

생성자(Constructor)

new 키워드(인스턴스생성을 담당)를 사용하여 객체를 생성할 때에 호출되는 것

객체를 생성하는 역할을 하는 클래스의 구성요소

인스턴스가 생성될때 호출된다

오버로딩이 가능하다

인스턴스 변수들을 초기화하는 특수한 메서드!

 

- 생성자의 이름은 클래스의 이름과 같아야 한다.

- 생성자는 리턴타입이 없다. (void를 쓰지않음 아예 리턴타입이 존재하지 않기때문)

class Car {
    public String model;
    public String color;

    public Car(){} // 기본생성자. 생성자가 없는 경우 자동 생성

		// 생성자 오버로딩
    public Car(String model, String color) { // 매개변수가 있는 생성자
        this.model = model;
        this.color = color;
    }

    void power() {
        System.out.println("시동을 걸었습니다.");
    }

    void accelerate() {
        System.out.println("더 빠르게!");
    }

    void stop(){
        System.out.println("멈춤");
    }
}

 

기본 생성자(Default Constructor)

= 매개변수가 없는 생성자

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

클래스 안에 하나도 없는 경우 자바가 기본생성자를 자동으로 추가해줌

이미 추가되어있는 경우는?? 추가된 생성자를 기본으로 사용

클래스명(){} //기본 생성자

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

 

매개변수가 있는 생성자

매개변수를 통해 호출 시에 해당 값을 받아 인스턴스를 초기화 함

고유한 특성을 가진 인스턴스를 계속 만들어야 하는 경우 각기 다른 값을 가지고 초기화 할 수 있다

public class ConstructorExample {
    public static void main(String[] args) {
        Car c = new Car("Model X", "빨간색", 250); // Car 객체 생성 및 초기화
        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이고, 컬러는 빨간색입니다.

 

this()

this() 메서드는 자신이 속한 클래스에서 다른 생성자를 호출하는 경우에 사용

- 생성자 내부에서만 사용

- 반드시 생성자의 첫줄에 위치

public class Test {
    public static void main(String[] args) {
        Example example = new Example();
        Example example2 = new Example(5);
    }
}

class Example  {
    public Example() {
        System.out.println("Example의 기본 생성자 호출!");
    };

    public Example(int x) {
        this();
        System.out.println("Example의 두 번째 생성자 호출!");
    }
}

//Output
Example의 기본 생성자 호출!
Example의 기본 생성자 호출!
Example의 두 번째 생성자 호출!

 

this 키워드

인스턴스 자기 자신을 가리킴

this를 통해서 인스턴스 자신의 변수에 접근할 수 있다

- 주로 인스턴스의 필드명과 지역변수를 구분하기 위한 용도로 사용

(메서드의 지역변수명이 필드명과 동일하게 구성되어있는게 많기 때문)

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;
    }
    ...
    ..

 

생성자 - 해시넷 (hash.kr)