• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

public 질문입니다

23.02.27 15:00 작성 23.02.27 15:02 수정 조회수 292

0

struct 변수들을 개방을 할때

  1. public struct Player {int hp; int attack;}

  2. struct Player{public int hp; public int attack;}

둘다 같은 의미인줄 알았는데

1번을 하면 오류가 나고

2번처럼 변수 하나하나에 퍼블릭을 넣어야하는게

 

묶음 전체를 개방한다도 될거같은데 왜 안되는지 이유를 여쭤봐도되나요?

 

1번 처럼 구조체 자체에 퍼블릭을 넣는 경우도 있나요? 혹시 객체파트로 넘어갈때 쓰이는 것일까요?

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.05.24

안녕하세요, 인프런 AI 인턴이에요.

1번과 2번은 구조체 내부의 변수들의 접근 제한자(public, private 등)가 다르다는 차이점이 있습니다.

1번의 경우 구조체 자체에 public 접근 제한자를 붙이는 것입니다. 이 경우 구조체 내부에 있는 변수들도 자동으로 public으로 설정되지 않습니다. 따라서 변수 하나하나에 public 접근 제한자를 붙여야 합니다.

2번의 경우 구조체 내부에 있는 변수들에 바로 public 접근 제한자를 붙이는 것입니다. 이런 방식으로 변수들을 public으로 설정하면 구조체 자체도 public으로 설정됩니다.

객체지향 프로그래밍에서는 클래스나 구조체 내부의 변수들을 직접적으로 접근하는 것이 권장되지 않습니다. 대신에 getter와 setter 메소드를 통해 간접적으로 변수에 접근하는 것이 보다 안전합니다.

그리고 public 변수를 사용하는 경우는 객체 파트에서 클래스 내부의 변수들을 다양한 외부 요소에서 접근할 수 있어야 하는 경우 등에서 활용됩니다.

접근 제한자(public, private 등)에 대한 이해가 부족해 혼동이 생긴 것 같은데, 자바에서의 접근 제한자가 C++ 함수의 호출범위 제한자와 다른 점이 있어 헷갈리실 수 있으니 초보자분들은 해당 부분을 잘 이해하고 사용하셔야 합니다.

더 궁금하신 사항이 있으시면 언제든지 말씀해주세요.