접근제어자
Kotlin에 접근제어자는 public과 private은 같지만 다른 부분이 존재한다.
Kotlin과 Java와의 차이
접근 제어자 | Kotlin | Java |
---|---|---|
public | 모든 곳에서 접근 가능 (기본값) | 모든 곳에서 접근 가능 |
protected | 같은 클래스 또는 하위 클래스에서만 접근 가능 | 같은 패키지 또는 하위 클래스에서 접근 가능 |
internal | 같은 모듈 내에서만 접근 가능 | 해당 없음 |
private | 같은 클래스 내에서만 접근 가능 | 같은 클래스 내에서만 접근 가능 |
default | 해당 없음 | 같은 패키지 내에서만 접근 가능 (기본값) |
- public : Kotlin과 Java 모두 모든 것에서 접근 가능하다.
- protected : Kotlin과 Java와 차이점이 존재한다.
- Kotlin 같은 클래스 또는 하위 클래스에서만 접근 가능
- 같은 패키지 또는 하위 클래스에서 접근 가능
- 둘이 다른 이유는 Kotlin에 경우 패키지의 개념 자체가 네임스페이스를 관리하는 용도로만 사용됨
- internal : Kotlin에만 존재하며 같은 모듈내에서만 접근 허용
- private : Kotlin과 Java 둘다 같은 클래스에서만 접근 가능
- default : Java에만 존재하며, 같은 패키지 내에서만 접근 가능하다.
- Kotlin은 기본이 public, Java는 기본이 default이다.
- . kt 파일 최상단에는 protected를 사용할 수 없다.
- 같은 클래스 내 또는 상위 클래스가 존재해야 하기 때문
- kotlin의 internal 접근 제어자가 Java로 변환되는 경우에는 public으로 변환된다.
생성자의 접근제어자
class Person public constructor(name: String){
}
Kotlin 생성자에서 기본적인 접근제어자는 public이다.
없어 보여도 사실 public constructor가 생략된 것이다.
다른 접근제어자를 쓸 때에는 constructor 키워드를 사용해야 한다.
class Person private constructor(name: String, age: Int){
}
유틸 함수의 접근 제어자
Kotlin에서 유틸 함수를 사용한다면 자동적으로 정적 메서드처럼 사용이 가능하다.
fun calculateSum(a: Int, b: Int): Int = a + b
다음과 같은 유틸 함수가 있다면 Java에 정적 메서드처럼 사용이 가능하다.
그 이유는 이 코드가 java로 옮겨진다면
public static int calculateSum(int a, int b) {
return a + b;
}
다음과 같은 코드가 되기 때문이다.'
프러퍼티에 적용하기
프러퍼티에도 접근제어자를 적용할 수 있고 setter에도 추가적으로 접근제어자를 적용할 수 있다.
class Person(
var name: String,
private var age: Int,
protected var address: String
var salary: Double ){
var socialSecurityNumber: String = ""
private set
var department: String = ""
protected set // getter는 public,
var position: String = ""
internal set
var yearsOfService: Int = 0
set(value) {
if (value >= 0) field = value
}
}
요약
- Kotlin과 Java에서 접근제어자는 public, private은 같지만 protected는 다르고 internal은 추가되었고 default는 없다.
- 생성자에도 접근제어자를 붙일 수 있는데 constructor를 꼭 붙여줘야 한다.
- 유틸함수에 경우 public이라면 public static처럼 사용이 가능하다.
- 프러퍼티에도 접근제어자를 적용 가능하고 setter에 또 따른 접근제어자를 사용할 수 있다.
출처 : 자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)
자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide) 강의 | 최태현 - 인프런
최태현 | 이 강의를 통해 Kotlin 언어의 특성과 배경, 문법과 동작 원리, 사용 용례, Java와 Kotlin을 함께 사용할 때에 주의할 점 등을 배울 수 있습니다., 요즘 대세인 코틀린을 공부하고 싶다면?⭐ J
www.inflearn.com
'Kotlin > Basic' 카테고리의 다른 글
Kotlin은 Java와 무엇이 다른가? (11) - 중첩 클래스 (0) | 2024.09.20 |
---|---|
Kotlin은 Java와 무엇이 다른가? (11) - Object (0) | 2024.09.20 |
Kotlin은 Java와 무엇이 다른가? (9) - 상속 (0) | 2024.09.19 |
Kotlin은 Java와 무엇이 다른가? (8) - 클래스 (0) | 2024.09.19 |
Kotlin은 Java와 무엇이 다른가? (7) - 함수 (0) | 2024.09.19 |