#12 코틀린 접근제한자
접근제한자 |
클래스 멤버일 경우 |
최상위 수준으로 선언 되었을 경우 |
public |
어드서든 사용 가능 |
어드서든 사용 가능 |
protected |
서브 클래스에서만 사용 가능 |
해당 없음 |
private |
클래스 내부에서만 사용 가능 |
코틀린 파일 내부에서만 사용 가능 |
internal |
같은 모듈에서만 사용 가능 |
같은 모듈에서만 사용가능 |
코틀린에서는 접근 제한자를 지정하지 않으면 기본적으로 public으로 간주
코틀린에서는 .kt 파일에 클래스, 변수, 함수를 정의하면 최상위 수준 변수/함수 라고 한다.
internal은 코틀린 특유의 접근제한자 이며, 같은 모듈내에서만 사용 가능함을 의미한다.
*모듈 : 두 개 이상의 코틀린 파일들이 같이 컴파일되어 생성되는 것
접근 제한자 |
클래스에 사용할 경우 |
클래스 멤버에 사용할 경우 |
abstract |
추상 클래스를 의미 |
함수에만 해당되며 실행코드가 없음 |
override |
해당 없음 |
상위 클래스의 멤버를 오버라이딩함 |
final |
서브 클래스를 만들 수 없음 |
상위 클래스 멤버를 오버라이딩할 수 없음 |
open |
서브 클래스를 만들 수 있음 |
상위 클래스 멤버를 오버라이딩할 수 있음 |
클래스 선언 앞에 abstract를 사용하면 추상 클래스가 되며, 인스턴스를 생성할 수 없다.
abstract를 사용한 클래스에서 멤버 함수를 사용 할때, 대개는 구현 코드가 없는 함수를 사용한다. 하지만 구현 코드가 있는 멤버 함수도 같이 사용 할 수있다. 또한 abstract를 사용한 클래스의 멤버 함수는 기본적으로 open이다.
override는 서브 클래스에서 상위 클래스의 멤버 속성이나 멤버 함수를 오버라이딩 할 때 반드시 지정해야한다.