알로하! Kotling Language Reference를 읽는 동안 클래스의 속성에 대한 키워드 "private"이 사용되지 않는다는 사실을 알게되었습니다 (항상 공개 된 기본값). 또한 게터와 세터가 자동으로 생성된다고 전했다. 그래서 수업을 만들고 필드를 비공개로 설정했습니다. 그러나 클래스의 객체를 만들 때 필드를 볼 수 없으며 setter 및 getter를 사용할 수 없습니다. 직접 작성하지 않으면됩니다. 그래서 규칙은 무엇입니까? 가시성 수정자를 기본값 (public)으로 두거나 비공개로 만들고 뮤 테이타 메소드를 제공합니까? 감사합니다.Kotlin의 학급 속성이 비공개이고 어떻게 액세스해야합니까?
2
A
답변
10
속성의 전체 개념은 필드와 그 접근자를 단일 엔터티에 캡슐화한다는 것입니다. 외부에서 수업의 속성을 액세스하고 수정할 수 있어야하는 경우 속성을 공개해야합니다. 외부에서 읽을 수 있어야하지만 업데이트하지 않으려면 private 접근자를 사용하여 public 속성을 정의 할 수 있습니다.
기본 접근자는 맞춤 클래스로 변경해도 컴파일러에서 항상 접근 자 메서드를 생성하고 클래스의 클라이언트는 기본 필드에 액세스하지 않으므로 클래스의 클라이언트에는 영향을 미치지 않습니다. 직접.
속성 접근 자와 별도로 명시 적 getter 또는 mutator 메서드를 작성하지 마십시오.
관련 문제
- 1. 학급 부모와 자녀를 어떻게 사용합니까?
- 2. mysql 별칭을 어떻게 액세스해야합니까?
- 3. 파편이 필요하며 어떻게 파편에 액세스해야합니까?
- 4. 다른 모듈의 DAL에 어떻게 액세스해야합니까?
- 5. Kotlin의 Jinq - 어떻게 람다를 SerializedLambda로 변환하나요?
- 6. Objective-C 학급 질문?
- 7. 학부모에 대한 학급 참조
- 8. Kotlin의 정적 확장 메서드
- 9. Kotlin의 NaN 비교
- 10. PHP4로 WebDAV 파일 서버에 어떻게 액세스해야합니까?
- 11. 컴파일 된 jar의 리소스에 어떻게 액세스해야합니까?
- 12. theme_preprocess에서 설정 한 vars에 어떻게 액세스해야합니까?
- 13. 분리 된 컨트롤러가 모델에 어떻게 액세스해야합니까?
- 14. ZF2 - 세션 컨테이너의 세션 변수에 어떻게 액세스해야합니까?
- 15. 동일한 VM에서 실행중인 JMX MBeanServer에 어떻게 액세스해야합니까?
- 16. Perl 하위 클래스에서 인스턴스 데이터에 어떻게 액세스해야합니까?
- 17. 파이썬으로 학생/학급 평균을 계산합니다.
- 18. ByteArrayOutputStream을 kotlin의 json으로 변환합니다.
- 19. Kotlin의 'by'키워드는 무엇을합니까?
- 20. Kotlin의 with와 run의 차이점
- 21. Kotlin의 새로운 연산자 (구문)
- 22. Androids에게 문의하기 Kotlin의 연락처
- 23. 클라이언트가 데이터베이스에 직접 액세스해야합니까?
- 24. UIImagePickerController는 iOS6에서 사진에 액세스해야합니까?
- 25. 서비스 계층에서 HttpContext에 액세스해야합니까?
- 26. Kotlin의 링크 된 목록 구현
- 27. Kotlin의 중첩 된 다중 선언
- 28. Kotlin의 빈 두 번째 공급자
- 29. Kotlin의 세미콜론 유추 규칙은 무엇입니까?
- 30. Kotlin의 2 차원 Int 배열
따라서 부동산 권리로 직접가는 것은 사실상 불가능합니다. 그리고 나는 그들을 항상 공개하는 것이 안전합니까? (나는 모든 것이 사적이어야하는 자바에서왔다) 어때요? – Sermilion
"직접 부동산에 가야 함"이란 무엇을 의미합니까? 속성의 후행 필드는 리플렉션을 통해서만 액세스 할 수 있습니다. 속성이 동일한 모듈에서만 액세스되는 경우 '내부'가시성을 사용해야합니다. – yole
Java에서와 마찬가지로 필드를 공개하면 getter 및 setter없이 액세스 할 수 있습니다. 이는 좋지 않습니다. 하지만 지금 받았어. 고마워. – Sermilion