본문 바로가기
쿤즈 Dev/Java

[Java] 클래스(Class)에 대해서 알아보자

by :)Koon 2023. 8. 23.

자바(Java)는 객체 지향 프로그래밍 언어이다. 그리고 클래스(Class)는 자바 프로그래밍에서 가장 기본적인 요소 중 하나이다. 클랙스는 객체(Object)의 특성과 동작을 정의하는 틀 또는 청사진으로 볼 수 있다. 객체는 실제 세계의 개념이나 사물을 프로그래밍에서 모델링한 것으로, 클래스를 기반으로 생성된다.

이번 포스팅에서는 클래스에 대해서 알아보자.


클래스(Class)의 기본 요소

클래스(Class)는 다음과 같은 요소들로 구성된다.

 

멤버 변수 Fields

클래스 내부에 선언된 변수이다. 그리고 이 객체의 상태를 나타낸다. 이러한 변수들은 클래스의 특성이나 속성을 표현하며, 각 객체마다 개별적인 값을 가질 수 있다. 하나의 클래스에서 만들어진 객체라도 내부의 존재하는 값은 모두 다를 수 있다.

 

메서드 Methods

클래스 내에서 정의된 함수로, 객체의 동작을 구현한다. 이 메서드들은 클래스 내부에서 데이터를 조작하거나 다양한 작업을 수행할 수 있다. 그리고 대부분은 메서드를 통해서 멤버 변수의 값을 조작한다. 추후에 다시 설명하겠지만 멤버 변수는 외부에서 조작하지 못하도록 캡슐화를 하기 때문에 변경할 수 있는 창구인 메서드를 이용해서 값을 조작한다.

 

생성자 Constructor

클래스로부터 객체를 생성할 때 호출되는 특별한 메서드이다. 즉, 생성자도 메서드이다. 하지만 특별한 메서드다. 객체를 클래스로부터 최초로 만들때 반드시 실행되는 메서드이기 때문이다. 이 생성자를 이용해서 객체의 초기 상태를 설정할 수 있다.

 

접근 제어자 Access Modifiers

클래스의 멤버 변수와 메서드에 대한 접근 범위를 지정한다. 이러한 접근 제어자는 'public', 'protected', 'private', 그리고 default(아무런 접근 제어자를 명시하지 않은 경우)가 있다. 접근 제어자 키워드대로 public은 완전히 오픈됨을 의미하며 protected는 상속에 관련된 키워드, 그리고 private은 외부에 전혀 노출하지 않겠다는 의미다. 이는 추후 조금씩 자세히 다뤄볼 예정이다.

 

정적 변수와 메서드 Static Variables and Methods

객체가 아닌 클래스 자체에 속하는 변수와 메서드를 의미한다. 클래스 변수는 모든 객체가 공유하며, 클래스 메서드는 객체가 아니라 클래스 자체에 연관된다. 그래서 모두가 공통적으로 사용하고 싶은 상수값들을 설정할 때 주로 사용한다.


클래스 사용 예제

클래스를 사용하는 방법에 대해서 알아보자. 아래는 사람이라는 데이터를 저장하기 위한 클래스 구조이다.

public class Person {
    // 멤버 변수
    private int age;
    private String name;

    // 생성자
    public Person() {
        this.age = 100;
        this.name = "이름없음";
    }

    public Person(int age, String name) {
        this.age = age;
        this.name = name;
    }

    // 메서드
    public void showIntroduce(){
        System.out.println("내 이름은 " + name +", 나이는 " + age + "이다.");
    }
}

위 예시에서 클래스 이름은 'Person' 이다. 클래스는 반드시 첫 글자를 대문자로 사용해야 한다.

멤버 변수는 이름을 나타내는 name과 나이를 나타내는 age가 있다. 이 둘은 모두 private 접근 제어자를 가지고 있기 때문에 객체를 만들었을 때 변수에 바로 접근이 불가능하다.

생성자는 초기값을 받아서 생성하도록 매개변수가 존재한다. 이 클래스의 객체를 만들 때에는 반드시 정수값, 문자열을 넣어주어야 생성할 수 있다.

메서드는 이름과 나이를 출력하는 기능을 가지고 있다.

 

위 클래스를 이용해서 객체를 만드는 예제를 알아보자.

public class PersonTest {
    public static void main(String[] args) {
        Person person1 = new Person();
        Person person2 = new Person(30, "koonsland");

        // person2.age = 30; // 접근 불가

        person1.showIntroduce();
        person2.showIntroduce();;
    }
}

Person 클래스를 이용해서 두 객체(Object)를 만들었다. 하나는 인자가 없는 생성자를 통해 만든 객체와 다른 하나는 값을 넣어서 만든 생성자이다. 이 두 객체는 서로 다른 값을 가지고 있다. 이를 출력하기 위해서 각각 멤버 메서드를 호출하여 값을 출력해 보자.

내 이름은 이름없음, 나이는 10이다.
내 이름은 koonsland, 나이는 30이다.

person1은 "이름없음"과 10이라는 값으로 초기화가 되었으며, person2는 "koonsland"와 30이라는 값으로 초기화되었다. 이때 멤버 변수는 private 접근 제어를 가지고 있기 때문에 person2.age라는 형태로는 호출이 불가능하다. 값을 호출하기 위해서는 별도의 메서드를 만들어 주어야 한다.


이번 포스팅에서는 클래스에 대해서 알아보았다. 자바는 모두 클래스로 작업한다. 지금부터가 진짜 자바 개발이라 할 수 있다.

댓글