반응형
클래스에 open 키워드가 없으면 기본적으로 닫힌 클래스
/* 닫힌 클래스는 상속 불가 */
class PublicClass{
}
open class
/* 상속이 필요한 경우라면 open class 활용 */
open class PublicClass{
}
private , protected 키워드로 속성 설정
/* 주 생성자에 접근 제어자(private)를 설정하면 get/set 불가한 속성이 된다.*/
open class PublicClass(var publicProp1: String, private var privateProp1: String){
var publicProp2 = "public prop2"
/* private로 설정하면 해당 클래스 내부에서만 사용가능하고, get/set 불가한 속성이 된다.*/
private var privateProp2 = "private prop2"
/* protected로 설정하면 상속 받은 클래스에서만 접근 가능하다*/
protected var protectedProp = "protected prop"
/* private 키워드를 붙였지만 클래스 내부이기 떄문에 접근 가능 */
fun publicFunc(){
println(privateProp1)
}
private fun privateFunc() = println("private 메소드") //이 클래스 안에서만 사용
protected fun protectedFunc() = println("protected 메소드")
}
fun main(){
val publicClass = PublicClass("Hello","World")
println(publicClass.publicProp1)
println(publicClass.privateProp1)
//private 키워드를 붙였기 때문에 외부에서 접근 불가
println(publicClass.protectedProp)
//protected 키워드를 붙여 선언했기 때문에 외부에서 접근 불가
}
출력 결과
Hello
반응형
private class
/* private 접근 제어자를 붙인 클래스는 같은 파일 내부에서만 사용 가능 */
private class PrivateClass{}
fun publicFunc() = println("public function")
/* private 접근 제어자를 붙인 함수는 같은 파일 내부에서만 사용 가능 */
private fun privateFunc() = println("private function")
var publicVariable = "public variable"
/* private 접근 제어자를 붙이 변수 or 상수는 같은 파일 내부에서만 사용 가능*/
private val privateConstant = "private constant
fun main(){
/* 상단의 코드 모두 private 키워드를 붙였지만 같은 파일 내부이기 때문에 접근 가능 */
val privateClass = privateClass()
privateFunc()
println( privateConstant )
}
출력 결과
private function
private constant
새 프로젝트에서 publicClass 상속받아서 접근하기
class Extender(prop1: String, prop2: String) : PublicClass(prop1, prop2){
//(prop1: String, prop2: String)가 PublicClass(prop1, prop2)에 전달되면서 초기화 한다
fun parentAccessDemo(){
/* publicClass에서 protected로 선언 된 속성과 기능은 접근 가능*/
println(protectedProp)
protectedFunc()
/* PublicClass에서 private로 선언 된 속성과 기능에느 접근 불가 */
/*println(privateProp1)
privateFunc()*/
}
fun main(){
/* 같은 파일에 정의 된 클래스, 함수, 변수 or 상수가 아니기 때문에 접근 불가 */
/* val privateClass = PrivateClass()
privateFunc()
println(privateConstant)*/
/* private 키워드가 없는 클래스, 함수, 변수 or 상수는 다른 파일에서 접근 가능 */
publicFunc()
println(publicVariable)
}
}
출력 결과
public function
public variable
반응형
'프로그래밍 > Kotlin' 카테고리의 다른 글
[코틀린 / Kotlin] lazy 와 lateinit 를 활용한 지연 초기화 (0) | 2022.10.20 |
---|---|
[코틀린 / Kotlin] getter와 setter (0) | 2022.10.20 |
[코틀린 / Kotlin] 보조 생성자 활용하기 (0) | 2022.10.19 |
[코틀린 / Kotlin] class 정의 , inti 블록 (0) | 2022.10.19 |
[코틀린 / Kotlin] 반복문(while문, do-while문, for문 , break, continue) (0) | 2022.10.19 |