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 프로그램을 만들 수 있습니다. 🚀
'IT > JAVA' 카테고리의 다른 글
| Java의 static과 final 키워드 활용법 (1) | 2025.02.25 |
|---|---|
| Java에서 인터페이스와 추상 클래스 비교(Interface, Abstract Class) (1) | 2025.02.24 |
| Java객체지향 프로그래밍 개념 (캡슐화, 상속, 다형성) (2) | 2025.02.22 |
| Java의 메서드와 매개변수 사용법 (2) | 2025.02.21 |
| Java 반복문 이해하기(for, while, do-while, break, continue ) (1) | 2025.02.20 |