[Java] 클래스

손주현·2025년 4월 11일
0

Java 기초

목록 보기
12/13
post-thumbnail

자바는 객체지향 프로그래밍 언어입니다. 그리고 그 중심에는 클래스(class)가 있습니다.
클래스를 이해하면 객체를 만들고 다룰 수 있으며, 코드의 재사용성과 구조적 설계 능력을 갖출 수 있습니다.

클래스가 필요한 이유

학생 2명의 이름, 나이, 성적을 출력하는 프로그램을 만들려면 아래와 같이 각각의 변수를 만들어야 한다.

String student1Name = "학생1";
int student1Age = 15;
int student1Grade = 90;
String student2Name = "학생2";
int student2Age = 16;
int student2Grade = 80;

문제점

  • 학생 수가 늘어나면 변수도 함께 늘어남
  • 출력 코드도 늘어나며 유지보수가 어려움

배열 도입 후 개선

String[] names = {"학생1", "학생2"};
int[] ages = {15, 16};
int[] grades = {90, 80};
  • 반복문 사용 가능
  • 하지만 이름, 나이, 성적이 각각 다른 배열로 나뉘어 있어 데이터 정합성 관리가 어려움

클래스 도입

public class Student {
    String name;
    int age;
    int grade;
}
Student student1 = new Student();
student1.name = "학생1";
student1.age = 15;
student1.grade = 90;
  • 학생이라는 하나의 단위로 데이터를 묶어 관리
  • 코드 가독성과 유지보수성 향상

클래스란?

  • 클래스는 객체를 만들기 위한 설계도
  • 클래스는 객체가 가져야 할 속성(필드)기능(메서드)를 정의

클래스의 기본 구조

public class 클래스이름 {
    // 멤버 변수 (필드)
    // 생성자
    // 메서드
}
구성요소설명
클래스 이름클래스의 이름. 대문자로 시작하는 것이 관례
필드(변수)객체의 속성 (예: 이름, 나이 등)
생성자객체 생성 시 자동 호출되는 메서드
메서드객체가 수행할 기능

객체(Object)와 인스턴스(Instance)

  • 객체(Object): 클래스에 따라 생성된 실체
  • 인스턴스(Instance): 객체와 의미는 같지만, 특정 클래스에서 만들어졌다는 것을 강조할 때 사용
Student student1 = new Student(); // student1은 Student 클래스의 인스턴스

객체 생성 과정

Student student1 = new Student();
  1. new Student() → 메모리에 Student 객체 생성 (예: x001)

  2. student1 변수에 참조값(x001) 저장

  3. student1.name → x001 객체의 name 필드에 접근

자바는 객체 자체가 아니라 객체 참조값(주소)을 저장한다.

클래스와 필드 사용

Student student = new Student();
student.name = "학생1";
student.age = 15;
student.grade = 90;
  • student.name처럼 .(dot)으로 객체의 필드에 접근
System.out.println(student.name);
  • 참조값을 통해 실제 객체의 데이터에 접근해 출력함

배열과 클래스 결합

학생이 많아질 경우, Student 객체를 배열로 관리할 수 있다.

Student[] students = new Student[2];
students[0] = student1;
students[1] = student2;

출력 예시:

for (Student s : students) {
	String result = String.format("이름: %s, 나이: %d, 성적: %d", s.name, s.age, s.grade);
    System.out.println(result);
}

마무리

지금까지 클래스를 도입하는 이유와 객체 생성 방식, 그리고 배열과 결합하여 데이터를 어떻게 구조화할 수 있는지 배웠습니다.
클래스를 통해 현실 세계의 개념을 코드로 표현할 수 있다는 점에서, 객체지향 프로그래밍의 첫걸음을 떼었다고 할 수 있습니다.

다음 글에서는 객체를 생성할 때 자동으로 호출되는 생성자(Constructor)
객체의 동작을 정의하는 메서드(Method)에 대해 자세히 알아보겠습니다.

profile
Clarinetist.dev

0개의 댓글