[Java] 클래스와 메서드

코드 속의 "진돌"·2024년 2월 2일
0
post-thumbnail

✅ 클래스와 메서드


클래스는 데이터인 멤버 변수 뿐 아니라 기능 역할을 하는 메서드도 포함할 수 있다.




1️⃣ 멤버 변수만 존재하는 클래스


✏️ ValueData

package oop1;

public class ValueData {
  int value;
}



✏️ ValueDataMain

package oop1;

public class ValueDataMain {

  public static void main(String[] args) {
    ValueData valueData = new ValueData();

    add(valueData);
    add(valueData);
    add(valueData);

    System.out.println("최종 숫자 = " + valueData.value);
  }

  static void add(ValueData valueData) {
    valueData.value++;
    System.out.println("숫자 증가 value = " + valueData.value);
  }
}



🖥️ 실행 결과



⚙️ 실행 과정

ValueData라는 인스턴스를 생성하고 외부에서 ValueData.value에 접근해 숫자를 하나씩 증가시키는 단순한 코드이다. 코드를 보면 데이터인 valuevalue의 값을 증가시키는 기능인 add()메서드가 분리되어 있다.

자바 같은 객체 지향 언어는 클래스 내부에 속성(데이터)과 기능(메서드)를 함께 포함할 수 있다. 클래스 내부에 멤버 변수 뿐만 아니라 메서드도 포함할 수 있다는 뜻이다.




2️⃣ 숫자를 증가시키는 기능을 포함한 클래스


✏️ ValueObject

package oop1;

public class ValueObject {
  int value;

  void add() {
    value++;
    System.out.println("숫자 증가 value = " + value);
  }
}

데이터인 value와 해당 데이터를 사용하는 기능인 add() 메서드를 함께 정의했다.

💡 참고 : 여기서 만드는 add() 메서드에는 static 키워드를 사용하지 않는다.


메서드는 객체를 생성해야 호출할 수 있다. 그런데 static이 붙으면 객체를 생성하지 않고도 메서드를 호출할 수 있다.



✏️ ValueObjectMain

package oop1;

public class ValueObjectMain {

  public static void main(String[] args) {
    ValueObject valueObject = new ValueObject();

    valueObject.add();
    valueObject.add();
    valueObject.add();

    System.out.println("최종 숫자 = " + valueObject.value);
  }
}



🖥️ 실행 결과



⚙️ 실행 과정

1️⃣ 인스턴스 생성

ValueObject valueObject = new ValueObject();

valueObject라는 객체를 생성했다. 이 객체는 멤버 변수 뿐만 아니라 내부에 기능을 수행하는 add() 메서드도 함께 존재한다.


2️⃣ 인스턴스의 메서드 호출

인스턴스의 메서드를 호출하는 방법은 멤버 변수를 사용하는 방법과 동일하다. .(dot)을 찍어서 객체 접근한 다음에 원하는 메서드를 호출하면 된다.

valueObject.add();  // 1
x002.add();  // 2: x002 ValueObject 인스턴스에 있는 add() 메서드를 호출한다.

3: add() 메서드를 호출하면 메서드 내부에서 value++을 호출하게 된다. 이때 value에 접근해야 하는데, 기본으로 본인 인스턴스에 있는 멤버 변수에 접근한다. 본인 인스턴스가 x002 참조값을 사용하므로 자기 자신인 x002.value에 접근하게 된다.

4: ++ 연산으로 value의 값을 하나 증가시킨다.




✅ 정리


  • 클래스는 속성(데이터, 멤버 변수)과 기능(메서드)을 정의할 수 있다.
  • 객체는 자신의 메서드를 통해 자신의 멤버 변수에 접근할 수 있다.
    • 객체의 메서드 내부에서 접근하는 멤버 변수객체 자신의 멤버 변수이다.
profile
매일 성장하는 주니어 개발자의 기록📝

0개의 댓글