Backend

<Backend> Java / Class (1) 클래스와 생성자

이게왜 2024. 4. 4. 15:08

Class

<Fronted>를 어느 정도 진행함에 따라 <Backend> 공부를 병행하려 합니다. 

  1. JAVA 기초 학습
  2. React를 사용하며 <Fronted> 심화학습
  3. JAVA 기반 <Backend> 학습

순으로 학습을 진행하겠습니다.

 

이번에는 JAVA / 객체 지향 프로그래밍의 핵심인 Class에 대해 다뤄보겠습니다.

 

* 목차

---- Class (1) ----

  • 클래스 (Class)
  • 생성자 (Constructor)

---- Class (2) ----

  • this
  • 메소드 (Method)

---- Class (3) ----

  • 접근 제한자 (Access Modifier)
  • 변수의 타입

1. 클래스 (Class)

Java에서 Class는 객체를 생성하기 위한 청사진입니다.

Class는 멤버 변수와 메서드로 구성됩니다.

클래스는 객체 지향 프로그래밍의 기본 단위이며, 객체를 생성하기 위한 틀로 사용됩니다.

 

  • 객체를 생성하기 위한 틀
  • 멤버 변수와 메서드로 구성됨
  • 객체 지향 프로그래밍의 기본 단위
public class Car {
    // 멤버 변수
    String color;
    String model;
    int year;

    // 메서드
    void start() {
        System.out.println("Engine started");
    }

    void stop() {
        System.out.println("Engine stopped");
    }
}

 

위 코드를 예시로 들어보겠습니다.

Car 클래스는 자동차의 속성(color, model, year 등)을 나타내는 멤버 변수와

자동차가 수행하는 행동(start(), stop() 등)을 나타내는 메서드로 구성될 수 있습니다.

  • 멤버 변수 : color, model, year
  • 메서드 : start(), stop()

2. 생성자 (Constructor)

생성자(Constructor)는 객체가 생성될 때 호출되는 특별한 메서드입니다. 이 메서드는 객체의 초기화를 담당하며, 클래스로부터 객체가 생성될 때 필요한 초기 설정을 수행합니다.

 

생성자의 특징

  • 생성자의 이름은 클래스의 이름과 동일하다.
  • 생성자는 리턴 타입을 가지지 않는다.
  • 객체가 생성될 때 한 번만 호출되며, 객체의 초기화를 담당한다.

 

객체 생성

클래스를 기반으로 객체를 생성하기 위해서는 new 키워드를 사용하여 인스턴스를 생성합니다.

public class Main {
    public static void main(String[] args) {
        // Car 클래스를 기반으로 객체 생성
        Car myCar = new Car();
        // 객체의 멤버 변수 설정
        myCar.color = "Red";
        myCar.model = "Tesla";
        myCar.year = 2022;
        // 객체의 메서드 호출
        myCar.start();
        myCar.stop();
    }
}

 

하지만, 이러한 방식으로 객체를 생성하게 된다면 생성한 객체마다 멤버 변수를 하나하나 할당해줘야 하는 번거로움이 있습니다.

때문에 생성자(Consturctor)를 사용하여 더욱 간편하게 객체를 생성할 수 있습니다.

또한 상황에 따라 기본생성자를 사용할 수도 있습니다.

 

기본 생성자

기본 생성자는 매개변수를 가지지 않는 생성자를 말합니다. 또한 클래스 내에서 명시적으로 정의하지 않아도 자동으로 추가됩니다.

** "객체 생성"의 예시 코드와 같이 명시적으로 정의하지 않아도 됩니다.

public class Car {
    String color;
    String model;
    int year;

    // 기본 생성자
    public Car() {
        // 아무런 초기화 작업이 없음
    }

    void start() {
        System.out.println("Engine started");
    }

    void stop() {
        System.out.println("Engine stopped");
    }
}
public class Main {
    public static void main(String[] args) {
        // 기본 생성자를 이용한 객체 생성
        Car myCar = new Car();
        // 초기화 작업이 필요 없는 경우에 사용
    }
}
  • 별다른 초기화 작업이 필요 없는 경우에 편리하게 사용가능

 

생성자

일반적인 생성자는 매개변수를 가질 수 있습니다. 또한 클래스 내에서 직접 정의해야 합니다.

public class Car {
    String color;
    String model;
    int year;

    // 매개변수를 가지는 생성자
    public Car(String color, String model, int year) {
        this.color = color;
        this.model = model;
        this.year = year;
    }

    void start() {
        System.out.println("Engine started");
    }

    void stop() {
        System.out.println("Engine stopped");
    }
}
public class Main {
    public static void main(String[] args) {
        // 일반적인 생성자를 이용한 객체 생성
        Car myCar = new Car("Blue", "BMW", 2023);
        // 초기화 작업을 포함한 객체 생성
    }
}

 

 

기본 생성자 vs 생성자

차이점

  • 매개변수의 유무
  • 명시적 정의

장단점

  • 편의성
    • 기본 생성자는 별다른 초기화 작업이 필요 없는 경우에 편리하게 사용할 수 있다.
    • 일반적인 생성자는 초기화 작업이 필요한 경우 사용한다.
  • 유연성
    • 일반적인 생성자를 사용하면 객체를 생성하고 초기화할 때 다양한 매개변수를 활용할 수 있다.
    • 객체의 초기화 상태를 다양하게 설정할 수 있다.
  • 초기화 작업
    • 기본 생성자는 초기화 작업이 필요 없는 경우 유용하다.
    • 일반적인 생성자는 객체의 초기화 작업을 수행할 수 있어 더 많은 유연성을 제공한다.