클라이언트/ 서버/ 엔지니어 " 게임 개발자"를 향한 매일의 공부일지

객체를 만드는 생성자 5 - 변수 유효 범위 본문

프로그래밍 언어/자바

객체를 만드는 생성자 5 - 변수 유효 범위

huenuri 2024. 8. 18. 22:41

이제 3주차의 가장 마지막 이론 학습을 시작해보겠다. 지역 변수와 전역 변수에 대한 학습인 것 같다. 이 부분은 오후에 자바 책을 통해 공부했던 부분이니 비교적 쉽게 이해할 수 있을 것 같다.


 

 

 

이론 5 - 변수 유효 범위

 

괄호에서 시작해서 괄호로 끝난다. 자동으로 제거되므로 auto 변수라고도 한다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

지역변수와 static 변수를 이해해야 한다. 그 나머지는  멤버 변수인데 원하는 만큼만 쓰고 자동으로 제거해준다.

 

 

 

 

 


 

 

 

 

 

 

퀴즈 6 - 지역, 멤버, static 변수

 

 

한번은 틀린 답안을 제출했다가 두번째에서 맞추었다. 멤버변수와 지역변수가 헤깔렸는데, 멤버 변수는 인스턴스마다 값이 다른 것을, 지역 변수는 함수의 기능 구현을 위해 잠깐 사용하는 것이었다.


 

 

 

 

실습 5 - 변수 유효 범위 체크하기

 

 


 

 

 

첫 번째 도전

 

 

이렇게 썼더니 지시사항 2번에서 오류가 떴다. 그건 인스턴스 변수의 경우 객체를 통해 접근해야 한다는 것이다. 우리는 여기서 객체를 만들고 그 변수를 c라고 했으니 이걸로 접근해야 한다. 인스턴스 변수는 멤버 변수를 말하는 것이다. 즉 메소드에 필드로 선언된 변수이다.

 

클래스를 설계할 때, 클래스 내에 선언된 변수를 인스턴스 변수라고 부른다. 이 변수들은 클래스로부터 생성된 각각의 객체에 대해 독립적으로 존재한다.


인스턴스 변수의 주요 특징

  1. 객체별로 존재: 각 객체는 자신의 인스턴스 변수를 가지고 있다. 즉, 같은 클래스에서 생성된 두 객체가 있다고 해도, 그 객체들이 가진 인스턴스 변수는 서로 독립적이다.
  2. 클래스의 인스턴스(객체)가 생성될 때 할당: 인스턴스 변수는 객체가 생성될 때 메모리에 할당되며, 객체가 사라지면 메모리에서 해제된다.
  3. 클래스 내부에서 선언: 인스턴스 변수는 클래스 내부에서 선언된다. 그러나 메서드 내부가 아닌 클래스의 본체에 선언되어야 한다.
  4. 객체를 통해 접근: 인스턴스 변수는 해당 클래스의 객체를 통해 접근해야 한다. 클래스 이름으로 직접 접근할 수 없고, 반드시 객체가 필요하다.
class Car {
    // 인스턴스 변수
    String color;  // 자동차의 색상
    int speed;     // 자동차의 속도
}

public class Main {
    public static void main(String[] args) {
        // Car 클래스의 인스턴스(객체)를 생성
        Car myCar = new Car();
        Car yourCar = new Car();

        // myCar 객체의 인스턴스 변수 설정
        myCar.color = "Red";
        myCar.speed = 100;

        // yourCar 객체의 인스턴스 변수 설정
        yourCar.color = "Blue";
        yourCar.speed = 80;

        // 인스턴스 변수 출력
        System.out.println("My Car color: " + myCar.color); // 출력: Red
        System.out.println("My Car speed: " + myCar.speed); // 출력: 100
        System.out.println("Your Car color: " + yourCar.color); // 출력: Blue
        System.out.println("Your Car speed: " + yourCar.speed); // 출력: 80
    }
}

 

 

  • 인스턴스 변수는 객체의 상태를 저장하는 변수로, 각 객체는 자신만의 인스턴스 변수를 갖는다.
  • 이 변수를 통해 객체의 고유한 속성을 관리할 수 있다.

 

 

 

다시 풀어보기

 

 

 

이제 출력이 잘 되었다.


 

 

 

 

학습을 마치고

이로써 마지막 단원 학습을 마쳤다. 미션 문제 두 문제가 남아있는데 그건 다음 포스트에서 이어서 풀어보려고 한다. 여기까지 오느라고 정말 수고가 많았다.