[kotlin] 코틀린에서의 접근 제한자와 데이터 은닉(data hiding)의 관계를 설명해주세요.
코틀린은 객체지향언어로써, 접근 제한자를 사용하여 클래스 멤버의 접근을 제어합니다. 이를 통해 데이터에 대한 캡슐화(encapsulation)가 가능하며, 그 결과로 데이터 은닉이 실현됩니다.
접근 제한자(Access Modifiers)
코틀린에서는 접근 제한자로 public
, protected
, private
, 그리고 기본적으로 지정되지 않은 경우의 패키지 수준 접근 제한자인 internal
이 있습니다.
- public: 모든 곳에서 접근이 가능
- protected: 하위 클래스 내부 또는 동일 패키지 내부에서만 접근이 가능
- private: 동일 클래스 내부에서만 접근이 가능
- internal: 같은 모듈 내에서만 접근이 가능
class Example {
public val publicVar: Int = 1
protected val protectedVar: Int = 2
private val privateVar: Int = 3
internal val internalVar: Int = 4
}
데이터 은닉(Data Hiding)
이러한 접근 제한자를 이용하여 코틀린에서 데이터 은닉을 구현할 수 있습니다. 접근 제한자를 사용하여 외부로부터의 직접적인 접근을 제한하고, getter와 setter를 통해 간접적으로 데이터에 접근할 수 있도록 합니다.
class User {
private var password: String = "1234"
fun changePassword(newPassword: String) {
// 비밀번호 변경 로직
password = newPassword
}
fun getPassword(): String {
return password
}
}
위의 예제에서 password
변수는 private
로 선언되어 있어 외부에서 직접적으로 접근할 수 없습니다. 대신 changePassword
와 getPassword
메서드를 통해 암호를 변경하고 조회할 수 있습니다.
코틀린에서의 접근 제한자는 캡슐화를 통해 데이터 은닉을 실현하는데 중요한 역할을 합니다. 이를 통해 안전한 데이터 관리와 유지보수가 용이한 코드를 작성할 수 있습니다.
이와 같은 이유로, 코틀린에서는 접근 제한자를 적절히 활용하여 데이터 은닉을 달성하는 것이 중요합니다.