2016-07-12 3 views
2

알로하! Kotling Language Reference를 읽는 동안 클래스의 속성에 대한 키워드 "private"이 사용되지 않는다는 사실을 알게되었습니다 (항상 공개 된 기본값). 또한 게터와 세터가 자동으로 생성된다고 전했다. 그래서 수업을 만들고 필드를 비공개로 설정했습니다. 그러나 클래스의 객체를 만들 때 필드를 볼 수 없으며 setter 및 getter를 사용할 수 없습니다. 직접 작성하지 않으면됩니다. 그래서 규칙은 무엇입니까? 가시성 수정자를 기본값 (public)으로 두거나 비공개로 만들고 뮤 테이타 메소드를 제공합니까? 감사합니다.Kotlin의 학급 속성이 비공개이고 어떻게 액세스해야합니까?

답변

10

속성의 전체 개념은 필드와 그 접근자를 단일 엔터티에 캡슐화한다는 것입니다. 외부에서 수업의 속성을 액세스하고 수정할 수 있어야하는 경우 속성을 공개해야합니다. 외부에서 읽을 수 있어야하지만 업데이트하지 않으려면 private 접근자를 사용하여 public 속성을 정의 할 수 있습니다.

기본 접근자는 맞춤 클래스로 변경해도 컴파일러에서 항상 접근 자 메서드를 생성하고 클래스의 클라이언트는 기본 필드에 액세스하지 않으므로 클래스의 클라이언트에는 영향을 미치지 않습니다. 직접.

속성 접근 자와 별도로 명시 적 getter 또는 mutator 메서드를 작성하지 마십시오.

+0

따라서 부동산 권리로 직접가는 것은 사실상 불가능합니다. 그리고 나는 그들을 항상 공개하는 것이 안전합니까? (나는 모든 것이 사적이어야하는 자바에서왔다) 어때요? – Sermilion

+0

"직접 부동산에 가야 함"이란 무엇을 의미합니까? 속성의 후행 필드는 리플렉션을 통해서만 액세스 할 수 있습니다. 속성이 동일한 모듈에서만 액세스되는 경우 '내부'가시성을 사용해야합니다. – yole

+0

Java에서와 마찬가지로 필드를 공개하면 getter 및 setter없이 액세스 할 수 있습니다. 이는 좋지 않습니다. 하지만 지금 받았어. 고마워. – Sermilion

관련 문제