본문 바로가기

Android Development/Java

Java Class & constructor 개념 정리

 

 

클래스(Class)란?

클래스(Class)는 객체 지향 프로그래밍(OOP)의 핵심 요소 중 하나입니다. 클래스는 객체(Object)의 설계도 또는 템플릿으로, 객체를 생성하기 위한 구조와 동작을 정의합니다. 클래스는 데이터(속성, 멤버 변수)메서드(동작, 멤버 함수)를 포함할 수 있습니다. 클래스 내의 모든 구성 요소가 필수로 들어가 있어야 하는 것은 아닙니다.

FizzBuzz 예제

클래스를 이해하는 데 도움을 줄 수 있는 간단한 예제로 FizzBuzz를 살펴보겠습니다. 이 예제는 main 메서드 하나로 동작하는 클래스입니다.


class FizzBuzz {
    public static void main(String[] args) {
        int i = 0;
        while (i < 100) {
            i++;
            if (i % 3 == 0 && i % 5 == 0) { // FizzBuzz case
                System.out.print("FizzBuzz");
            } else if (i % 5 == 0) { // multiple of 5, then Buzz
                System.out.print("Buzz");
            } else if (i % 3 == 0) { // multiple of 3, then Fizz
                System.out.print("Fizz");
            } else {
                System.out.print(i);
            }
            if (i < 100) {
                System.out.print(", ");
            }
        }
    }
}
    

이 코드는 1부터 100까지의 숫자를 순차적으로 출력하면서, 3의 배수에는 "Fizz", 5의 배수에는 "Buzz", 그리고 3과 5의 공배수에는 "FizzBuzz"를 출력하는 프로그램입니다.

클래스의 구성 요소

1. 필드(멤버 변수; 속성)

클래스의 상태를 나타내는 변수입니다. 각 객체는 자신만의 속성 값을 가집니다. 예를 들어, 자동차 클래스의 속성으로는 속도, 색상, 모델 등이 있을 수 있습니다.

2. 생성자(Constructor)

클래스로부터 객체를 생성할 때 호출되는 특별한 종류의 메서드입니다. 생성자는 객체가 초기화되는 과정을 처리하고, 객체를 사용할 수 있도록 준비합니다. 여러 가지 형태와 목적의 생성자가 있을 수 있습니다.

  • 기본 생성자(Default Constructor): 클래스에 생성자를 명시적으로 정의하지 않으면 컴파일러가 기본 생성자를 자동으로 추가합니다. 기본 생성자는 매개변수가 없고, 해당 클래스의 필드를 기본값으로 초기화합니다.
  • 오버로딩 가능: 여러 개의 생성자를 정의하여 다양한 초기화 방법을 지원할 수 있습니다. 이를 생성자 오버로딩이라고 합니다.

3. 메서드(멤버 함수; 동작)

클래스가 수행하는 동작을 나타내는 함수입니다. 이 메서드들은 객체의 상태를 변경하거나 객체에 대한 정보를 제공할 수 있습니다. 예를 들어, 자동차 클래스의 메서드로는 주행, 멈춤, 속도 증가 등이 있을 수 있습니다.


public class Car {
    // 필드(멤버 변수)
    String color;
    String model;
    int speed;

    // 생성자
    public Car(String carColor, String carModel, int carSpeed) {
        color = carColor;
        model = carModel;
        speed = carSpeed;
    }

    // 메서드(멤버 함수)
    public void accelerate() {
        speed += 10;
    }

    public void brake() {
        speed -= 10;
    }
}
    

위 코드에서 Car 클래스는 색상, 모델, 속도라는 세 가지 필드를 가지고 있으며, 가속과 제동을 담당하는 두 가지 메서드를 가지고 있습니다.

생성자(Constructor)에 대한 상세 설명

생성자는 클래스의 인스턴스(객체)를 생성할 때 호출되는 특수한 메서드입니다. 생성자는 객체가 생성될 때 필요한 초기화 작업을 수행합니다. 여러 가지 형태와 목적의 생성자가 있을 수 있으며, 이를 통해 객체의 초기 상태를 설정할 수 있습니다.

  • 메서드와 구분: 생성자는 클래스 내에 선언되지만 일반적인 메서드와 구별하기 위해 클래스와 같은 이름을 가지고 있습니다. 또한 반환 타입이 없으며, 실제로는 반환 값이 아닌 객체를 생성하고 초기화합니다.
  • 인스턴스 생성 시 호출: 객체를 생성할 때 자동으로 호출됩니다. new 키워드를 사용하여 객체를 생성할 때 생성자가 호출됩니다.
  • 기본 생성자(Default Constructor): 클래스에 생성자를 명시적으로 정의하지 않으면 컴파일러가 기본 생성자를 자동으로 추가합니다. 기본 생성자는 매개변수가 없고, 해당 클래스의 필드를 기본값으로 초기화합니다.
  • 오버로딩 가능: 여러 개의 생성자를 정의하여 다양한 초기화 방법을 지원할 수 있습니다. 이를 생성자 오버로딩이라고 합니다.

P.S.

main 메서드는 Java 프로그램의 진입점(entry point)으로, 프로그램 실행 시 반드시 있어야 하는 메서드입니다.

main 메서드를 포함한 클래스가 있어야 프로그램이 실행됩니다.

여러 클래스를 작성할 때 모든 클래스에 main 메서드가 포함될 필요는 없으며, 실행하고자 하는 클래스에만 main 메서드를 작성합니다.

'Android Development > Java' 카테고리의 다른 글

java의 작동 원리  (1) 2024.09.13
Java Method의 개념과 활용 예제 정리  (1) 2024.09.12
Java 필드(Field)의 개념과 사용 방법  (1) 2024.09.11