1) 접근제한자
- 서로 다른 파일에게 자신에 대한 접근 권한을 제공하는 것.
- 각 변수나 클래스 이름 앞에 아무런 접근제한자를 붙이지 않았을 경우에는 기본적으로 public이 적용된다.
· 접근제한자의 종류
1. private : 다른 파일에서 접근할 수 없다.
2. internal : 같은 모듈에 있는 파일만 접근할 수 있다.
3. protected : private와 같으나 상속관계에서 자식 클래스가 접근할 수 있다.
4. public : 제한없이 모든 파일에서 접근할 수 있다.
abstract class BaseActivity : AppCompatActivity() {
private var privateName: String = "peace"
protected var protectedName : String = "peace"
internal var internalName :String = "peace"
var publicName: String = "peace"
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
}
}
class MainActivity : BaseActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// privateName private로 선언되었기 때문에 접근 불가
protectedName //BaseActivity를 상속하고 있기 때문에 접근 가능
internalName // 같은 모듈에 있기 때문에 접근 가능
publicName //public이 적용되었기 때문에 접근 가능
}
}
2) Generic
- 입력되는 값의 타입을 자유롭게 사용하기 위한 설계 도구
- 주로 컬렉션이나 배열에서 입력되는 값의 타입을 특정하기 위해 사용한다.
var list: MutableList<제네릭> = mutableListOf("월", "화", "수")
fun memberList(){
var nameList : MutableList<String> = mutableListOf("평화", "혁주", "동관")
print(nameList)
}
3) Null Safety
- 코틀린은 null pointer 예외가 발생하는 것을 막기 위해 여러가지 안전장치를 만들어두었다.
· null값 허용하기 : Nullable
-코틀린에서 지정하는 기본 변수는 모두 null이 입력되지 않는다.
-null값을 입력하기 위해서는 변수를 선언할 때 타입 뒤에 ?(nullable)를 입력해야 한다.
- 변수에 Null 허용하기
var age: String? = null
- 함수 파라미터에 Null 허용하기
class MainActivity : BaseActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
memberList(null)
}
fun memberList(email: String?){
if(email != null){ // email 파라미터에 대한 null 체크를 수행해야 email 파라미터 사용 가능
println(email)
}
}
}
→ 위 코드처럼 함수 파라미터가 null을 허용한 경우에는 코드 내부에서 해당 파라미터에 대해 null여부를 체크해야만 파라미터를 쓸 수가 있다.
- 함수의 리턴타입에 Null 허용하기
fun memberList() : String?{
return null
}
· 안전한 호출 >>> ?.(Safe Call)
- Nullable인 변수 다음에 ?.을 사용하면 해당 변수가 null일 경우 ?.다음의 메서드나 프로퍼티를 호출하지 않는다.
fun memberList(email: String?) : String?{
var emailLength: Int? = email?.length
// 만약 SafeCall을 사용하지 않았는데 email 변수가 null 이라면 프로그램은 다운된다.
return null
}
'차근차근 코틀린' 카테고리의 다른 글
| [Kotlin] High Order Function(고차함수) (0) | 2021.06.05 |
|---|---|
| 차근차근 코틀린(7) - 설계 (0) | 2020.09.08 |
| 차근차근 Kotlin(5) - 함수 (0) | 2020.09.06 |
| 차근차근 Kotlin(4) - 반복문 for, while (0) | 2020.09.06 |
| 차근차근 Kotlin(3) - Array, Collection (0) | 2020.09.04 |