자바(Java)는 객체 지향 프로그래밍(Object-Oriented Programming, OOP)을 지원하는 대표적인 프로그래밍 언어입니다. 객체 지향 프로그래밍은 현실 세계를 반영하여 소프트웨어를 개발하는 방법론으로, 프로그램을 객체라는 단위로 나누어 작성합니다. 자바에서의 클래스(Class)와 객체(Object)는 이러한 객체 지향 프로그래밍의 기본 구성 요소로 매우 중요합니다. 이번 글에서는 자바에서 클래스와 객체가 무엇인지, 그리고 그 사용 방법에 대해 자세히 설명하겠습니다.
클래스(Class)란?
클래스는 객체를 생성하기 위한 청사진(BluePrint) 혹은 템플릿(Template)이라고 할 수 있습니다. 클래스는 데이터와 그 데이터를 처리하는 메소드를 포함합니다. 자바에서는 클래스를 정의하여 객체를 생성하고, 생성된 객체를 통해 프로그램을 수행합니다. 클래스는 다음과 같은 요소를 포함할 수 있습니다.
- 필드(Field): 클래스 내부에 선언된 변수로, 객체의 상태나 속성을 저장합니다.
- 메소드(Method): 클래스 내부에 선언된 함수로, 객체의 동작을 정의합니다.
- 생성자(Constructor): 객체를 생성할 때 호출되는 특별한 메소드로, 객체의 초기 상태를 설정합니다.
클래스의 정의
자바에서 클래스는 class 키워드를 사용하여 정의합니다. 예를 들어, 자동차를 표현하는 클래스를 정의해보겠습니다.

위의 예제에서 Car 클래스는 color, model, year라는 필드를 가지고 있으며, Car 객체를 생성할 때 호출되는 생성자와 displayDetails라는 메소드를 포함하고 있습니다.
객체(Object)란?
객체는 클래스에서 정의된 인스턴스(instance)입니다. 다시 말해, 클래스라는 청사진을 바탕으로 실제로 생성된 실체입니다. 객체는 클래스에서 정의한 필드와 메소드를 가지며, 각각의 객체는 독립적인 상태를 유지합니다.
객체의 생성
자바에서 객체는 new 키워드를 사용하여 생성합니다. 다음은 위에서 정의한 Car 클래스를 바탕으로 객체를 생성하고 사용하는 예제입니다.

위의 코드에서 myCar는 Car 클래스의 객체입니다. new Car("Red", "Toyota", 2022)를 통해 myCar 객체를 생성하고, 생성된 객체의 displayDetails 메소드를 호출하여 필드의 값을 출력합니다.
클래스와 객체의 관계
클래스와 객체는 밀접한 관계를 가지며, 클래스는 객체를 생성하기 위한 틀이고, 객체는 클래스에서 정의된 구조를 실제로 구현한 것입니다. 클래스는 추상적 개념을 정의하고, 객체는 그 개념의 구체적인 실체를 제공합니다. 예를 들어, Car 클래스는 자동차의 일반적인 특성과 동작을 정의하고, myCar 객체는 특정한 색상, 모델, 연도를 가진 실제 자동차를 나타냅니다.
접근 제어자와 캡슐화
자바에서 클래스와 객체를 다룰 때 중요한 개념 중 하나가 접근 제어자(Access Modifier)와 캡슐화(Encapsulation)입니다. 접근 제어자는 클래스의 필드와 메소드에 대한 접근 권한을 제어하며, 캡슐화는 객체의 데이터를 외부로부터 보호하고, 데이터를 조작하는 방법을 제공하는 것입니다.
접근 제어자
자바에서는 다음과 같은 접근 제어자를 사용합니다.
- public: 모든 클래스에서 접근 가능
- protected: 같은 패키지 내의 클래스와 상속받은 클래스에서 접근 가능
- default: 같은 패키지 내의 클래스에서만 접근 가능 (명시하지 않을 경우 기본 설정)
- private: 해당 클래스 내에서만 접근 가능
package Example;
public class Car {
// 필드
private String color;
private String model;
private int year;
// 생성자
public Car(String color, String model, int year) {
this.color = color;
this.model = model;
this.year = year;
}
// 메소드
public void displayDetails() {
System.out.println("Color: " + color);
System.out.println("Model: " + model);
System.out.println("Year: " + year);
}
// Getter 메소드
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public String getModel() {
return model;
}
public void setModel(String model) {
this.model = model;
}
public int getYear() {
return year;
}
public void setYear(int year) {
this.year = year;
}
}
위의 예제에서 color, model, year 필드는 private로 선언되어 외부에서 직접 접근할 수 없지만, public으로 선언된 getColor, setColor 등의 메소드를 통해 간접적으로 접근할 수 있습니다. 이를 통해 객체의 내부 데이터를 보호하면서도 필요한 경우 데이터를 수정할 수 있습니다.
결론
자바에서 클래스와 객체는 객체 지향 프로그래밍의 핵심 요소입니다. 클래스는 객체를 생성하기 위한 청사진으로, 데이터와 그 데이터를 처리하는 메소드를 포함합니다. 객체는 클래스에서 정의된 인스턴스로, 독립적인 상태를 유지합니다. 접근 제어자와 캡슐화를 통해 객체의 데이터를 보호하고, 안전하게 조작할 수 있습니다. 이러한 개념을 이해하고 활용함으로써 더욱 효율적이고 유지보수하기 쉬운 프로그램을 작성할 수 있습니다.
'JAVA' 카테고리의 다른 글
| 배열과 ArrayList 과 상속 (0) | 2024.07.28 |
|---|---|
| 참조 변수와 일반 변수에 대한 이해 (1) | 2024.07.08 |
| JAVA 변수 with 이클립스 (0) | 2024.07.08 |
| JAVA 프로그래밍 기초 with.이클립스 (1) | 2024.07.08 |
| (디지털컨버전스)공공데이터 융합 JAVA 개발자 양성과정에 대한 각오 (1) | 2024.06.30 |