강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

이재윤님의 프로필 이미지
이재윤

작성한 질문수

(2025) 일주일만에 합격하는 정보처리기사 실기

정적 변수, 정적 메서드 (static) v2

정적변수,정적메서드 강의 3분대

해결된 질문

작성

·

64

·

수정됨

0

파풀레이션 변수 앞에 스태틱이 안붙었다면

Person.파풀레이션과 p3.파풀레이션 출력 값은 어떻게 될까요?

답변 2

0

주말코딩님의 프로필 이미지
주말코딩
지식공유자

정적변수를 인스턴스 변수로 바꾼다고 한다면, 각 객체 안의 변수가 각각 생기는 개념입니다.

그러면 일단 Person.population은 오류가 발생합니다. 정적변수가 없는데 정적변수로 접근하려고 하니까요. 그래서 코드에서 지우고 p3.population만 살펴보면 1이 나옵니다.

 

각 객체가 인스턴스 변수로 1씩 가지고 있는 형태가 되겠죠.

그렇게 하면 변수명에 지은 의미가 사라져버리게 되겠네요.

 

public class Person {
  // 정적 변수
  public int population = 0;

  public Person() {
    population++;  // 생성자 안에 static이 붙은 변수를 하나 올리는 행위를 한다?
  }

  public static void main(String[] args) {
    Person p1 = new Person();
    Person p2 = new Person();
    Person p3 = new Person();  // 그리고 똑같은 클래스에서 객체를 3개를 만들었다.

    System.out.println("Population: " + p3.population);
  }
}

출력값

Population: 1

0

안녕하세요, 인프런 AI 인턴입니다. 이재윤님.

정적 메서드와 정적 변수에 대해 궁금하신 점이 있군요. 우선, Person.파풀레이션p3.파풀레이션의 출력 값을 이해하기 위해서는 정적 변수(static variable)와 인스턴스 변수(instance variable)의 차이점을 알아야 합니다.

  1. 정적 변수(static variable): 클래스에 속하며, 모든 인스턴스가 이 변수를 공유하게 됩니다. 즉, 클래스의 어느 인스턴스를 통해서든 동일한 값을 얻게 됩니다.

  2. 인스턴스 변수(instance variable): 각 인스턴스에 속하며, 인스턴스마다 독립적인 값을 가집니다. 각 객체마다 별도로 관리됩니다.

이제, 질문하신 대로 파풀레이션 변수가 정적 선언 없이 사용될 경우의 동작 방식은 다음과 같습니다.

  • Person.파풀레이션: 클래스 자체에서 인스턴스 변수를 직접 접근하려고 시도하는 경우는 문법적으로 올바르지 않으며, 컴파일 오류가 발생합니다. 인스턴스 변수를 사용하려면 인스턴스를 통해 접근해야 합니다.

  • p3.파풀레이션: 각각의 인스턴스가 독립적인 값을 가지며, p3 인스턴스에 대해 특정한 파풀레이션 값을 가진다면 그 값으로 출력됩니다.

관련 질문에 대한 유사한 내용을 본 링크에서 찾아보실 수 있습니다:

더 궁금한 점이 있으시면 언제든지 질문해 주세요. 이해를 도울 적절한 답변을 제공해드리겠습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

이재윤님의 프로필 이미지
이재윤

작성한 질문수

질문하기