본문 바로가기
IT/JAVA

Java클래스와 객체의 차이 및 생성자 사용법(Class, Object, Constructor)

by ohukohoh 2025. 2. 23.
728x90
반응형

Java는 객체지향 프로그래밍(OOP)을 기반으로 하며, 클래스(Class)와 객체(Object) 개념이 핵심 요소입니다. 클래스는 객체를 생성하는 설계도이며, 객체는 클래스를 기반으로 만들어진 실체입니다. 또한, 객체를 생성할 때 필요한 초기 작업을 수행하는 생성자(Constructor) 개념이 존재합니다.


1. 클래스(Class)와 객체(Object)의 차이

클래스란?

클래스는 **객체를 정의하는 틀(설계도)**입니다.

  • 속성(변수)과 동작(메서드)을 포함할 수 있습니다.
  • 클래스를 기반으로 여러 개의 객체를 생성할 수 있습니다.

객체란?

객체는 **클래스를 기반으로 만들어진 실체(Instance)**입니다.

  • 객체는 클래스에서 정의한 속성과 메서드를 사용할 수 있습니다.
  • 객체를 통해 프로그램에서 실제 데이터 처리가 이루어집니다.

클래스와 객체 예제

// 클래스 정의
class Car {
    String model;
    int year;
    
    void drive() {
        System.out.println(model + "이(가) 주행 중입니다.");
    }
}

public class Main {
    public static void main(String[] args) {
        // 객체 생성
        Car myCar = new Car();
        myCar.model = "Tesla Model S";
        myCar.year = 2023;
        
        // 메서드 호출
        myCar.drive();
    }
}

출력 결과:

Tesla Model S이(가) 주행 중입니다.

🔹 클래스는 설계도, 객체는 설계도를 기반으로 생성된 실체입니다. 🔹 객체를 생성하면 클래스에 정의된 속성과 메서드를 사용할 수 있습니다.


2. 생성자(Constructor)란?

생성자의 개념

생성자는 객체가 생성될 때 자동으로 호출되는 특수한 메서드입니다.

  • 객체의 초기값을 설정하는 역할을 합니다.
  • 생성자의 이름은 클래스명과 동일해야 합니다.
  • 반환 타입이 없으며, void도 사용하지 않습니다.

기본 생성자(Default Constructor)

클래스에 생성자를 명시적으로 선언하지 않으면, Java가 자동으로 기본 생성자(매개변수 없는 생성자)를 제공합니다.

예제:

class Person {
    String name;
    int age;
    
    // 기본 생성자 (명시적 선언)
    public Person() {
        System.out.println("Person 객체가 생성되었습니다.");
    }
}

public class Main {
    public static void main(String[] args) {
        Person p = new Person(); // 기본 생성자 호출
    }
}

출력 결과:

Person 객체가 생성되었습니다.

매개변수가 있는 생성자(Parameter Constructor)

생성자에 매개변수를 추가하여 객체 생성 시 값을 초기화할 수 있습니다.

예제:

class Person {
    String name;
    int age;
    
    // 매개변수 생성자
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    void introduce() {
        System.out.println("안녕하세요, 저는 " + name + "이고, 나이는 " + age + "살입니다.");
    }
}

public class Main {
    public static void main(String[] args) {
        Person p1 = new Person("김철수", 25);
        p1.introduce();
    }
}

출력 결과:

안녕하세요, 저는 김철수이고, 나이는 25살입니다.

🔹 생성자에 매개변수를 추가하면 객체 생성 시 값을 초기화할 수 있습니다. 🔹 this 키워드를 사용하여 객체의 멤버 변수를 가리킬 수 있습니다.


3. 생성자 오버로딩(Constructor Overloading)

생성자 오버로딩이란?

  • 같은 클래스 내에서 같은 이름의 생성자를 매개변수의 개수나 타입이 다르게 정의하는 것
  • 다양한 방법으로 객체를 초기화할 수 있도록 유연성을 제공합니다.

예제:

class Car {
    String model;
    int year;
    
    // 기본 생성자
    public Car() {
        this.model = "미정";
        this.year = 0;
    }
    
    // 매개변수가 있는 생성자
    public Car(String model, int year) {
        this.model = model;
        this.year = year;
    }
    
    void displayInfo() {
        System.out.println("모델: " + model + ", 연식: " + year);
    }
}

public class Main {
    public static void main(String[] args) {
        Car car1 = new Car(); // 기본 생성자 호출
        Car car2 = new Car("Tesla Model Y", 2023); // 매개변수 생성자 호출
        
        car1.displayInfo();
        car2.displayInfo();
    }
}

출력 결과:

모델: 미정, 연식: 0
모델: Tesla Model Y, 연식: 2023

🔹 같은 이름의 생성자를 매개변수 타입이나 개수를 다르게 정의하여 여러 방식으로 객체를 초기화할 수 있습니다. 🔹 this 키워드를 활용하여 생성자 내부에서 클래스 멤버 변수에 접근할 수 있습니다.


결론

Java에서 클래스는 객체를 정의하는 설계도, 객체는 클래스를 기반으로 생성된 실체입니다.

  • 생성자는 객체를 생성할 때 자동으로 호출되며, 초기값을 설정하는 역할을 합니다.
  • 기본 생성자는 매개변수가 없으며, Java가 자동 제공할 수도 있습니다.
  • 매개변수 생성자를 사용하면 객체 생성 시 초기값을 설정할 수 있습니다.
  • 생성자 오버로딩을 활용하면 다양한 방식으로 객체를 초기화할 수 있습니다.

객체를 생성하고 관리하는 기본 개념을 이해하고 활용하면, 보다 효율적인 Java 프로그램을 만들 수 있습니다. 🚀

728x90
반응형