public 질문입니다
431
작성한 질문수 2
struct 변수들을 개방을 할때
public struct Player {int hp; int attack;}
struct Player{public int hp; public int attack;}
둘다 같은 의미인줄 알았는데
1번을 하면 오류가 나고
2번처럼 변수 하나하나에 퍼블릭을 넣어야하는게
묶음 전체를 개방한다도 될거같은데 왜 안되는지 이유를 여쭤봐도되나요?
1번 처럼 구조체 자체에 퍼블릭을 넣는 경우도 있나요? 혹시 객체파트로 넘어갈때 쓰이는 것일까요?
답변 1
0
안녕하세요, 인프런 AI 인턴이에요.
1번과 2번은 구조체 내부의 변수들의 접근 제한자(public, private 등)가 다르다는 차이점이 있습니다.
1번의 경우 구조체 자체에 public 접근 제한자를 붙이는 것입니다. 이 경우 구조체 내부에 있는 변수들도 자동으로 public으로 설정되지 않습니다. 따라서 변수 하나하나에 public 접근 제한자를 붙여야 합니다.
2번의 경우 구조체 내부에 있는 변수들에 바로 public 접근 제한자를 붙이는 것입니다. 이런 방식으로 변수들을 public으로 설정하면 구조체 자체도 public으로 설정됩니다.
객체지향 프로그래밍에서는 클래스나 구조체 내부의 변수들을 직접적으로 접근하는 것이 권장되지 않습니다. 대신에 getter와 setter 메소드를 통해 간접적으로 변수에 접근하는 것이 보다 안전합니다.
그리고 public 변수를 사용하는 경우는 객체 파트에서 클래스 내부의 변수들을 다양한 외부 요소에서 접근할 수 있어야 하는 경우 등에서 활용됩니다.
접근 제한자(public, private 등)에 대한 이해가 부족해 혼동이 생긴 것 같은데, 자바에서의 접근 제한자가 C++ 함수의 호출범위 제한자와 다른 점이 있어 헷갈리실 수 있으니 초보자분들은 해당 부분을 잘 이해하고 사용하셔야 합니다.
더 궁금하신 사항이 있으시면 언제든지 말씀해주세요.
Generic에 대한 질문 있습니다.
0
100
2
2022 버전에 커뮤니티 버전이 없는데 2026 버전으로 해도 무관?
0
208
2
다형성 캐시 문제
0
117
3
.
0
73
1
프로퍼티 강의 질문 있습니다.
0
79
1
이후 커리 질문
0
87
1
static
0
96
2
강의에는 새로운 클래스 파일을 생성하면...
0
74
1
생성자의 이름 선언
0
66
1
9:03 Divide(10 , 3) 부분 질문입니다
0
91
1
깃허브 관련 질문 있습니다.
0
241
1
비쥬얼 스튜디오 업데이트가 된건가요..? 매개변수 오류 관련 질문
0
252
1
C# 시리즈 || C++ 시리즈 자료구조 강의에 대한 질문입니다!
0
308
2
Activator 질문있습니다
0
337
1
이넘 타임 선언 질문
0
351
1
Sort 오름차순, 내림차순
0
324
1
질문 있습니다.
0
250
1
팩토리얼 문제
0
273
1
Sort함수 질문있습니다.
0
267
1
다형성 함수 질문 있습니다.
0
223
1
질문이 있습니다.
0
232
1
섹션2 연습문제 질문입니다.
0
216
1
안녕하세요~서버에 대해 질문이 있습니다.
1
285
1
텍스트 색깔이 제 편집기와 달라서 수강에 어려움이 있습니다ㅜㅜ
0
397
1





