YSHUSH

접근지정자 본문

Coding/Kotlin

접근지정자

코딩; 2022. 1. 26. 07:34

 

상속

open class Person{
    val firstName:String = ""
    val lastName:String = ""
    private var age:Int = 24

    protected var protectVar:Int = 12

    internal var interVar:Int = 20  // internal은 패키지가 다르면 접근이 안됨

/*
    constructor(firstName: String, lastName:String, age:Int) {
        this.firstName = firstName
        this.lastName = lastName
        this.age = age
    }
*/

    private fun privateFunc(){

    }

    override fun toString(): String {
        privateFunc()
        return "Person(firstName='$firstName', lastName='$lastName', age=$age)"
    }
}

상속관계의 클래스가 있을 경우 상속를 하는 클래스 앞에 open을 붙여주어야 한다.

protected : 상속받은 클래스 내에서만 접근가능

internal : 같은 패키지 내에서 접근 가능

class Human:Person(){

    fun method(){
        protectVar = 23
        println(protectVar)

        interVar = 21
        println(interVar)
    }
}

함수호출부

fun main(args: Array<String>) {

    val human = Human()
    human.method()
    // human.protectVar = 25 -> 안됨
    human.interVar = 22
    
}

 

 

property선언 + constructor

class Bird(var name: String, var wing: Int, val color: String){  // 외부 초기화

    var vol:Int = 23	// 이렇게 쓰면 안되지만 이렇게도 property를 추가할 수 있다

    fun fly() = println("Fly Wing: $wing")

    override fun toString(): String {
        return "Bird(name='$name', wing=$wing, color='$color')"
    }
}

내부초기화

class MyClass{
    var number:Int

    init {      // init -> 내부 초기화
        number = 123
        println(number)
    }
}

함수호출부

fun main(args: Array<String>) {

    val bird = Bird("나이팅게일", 2, "blue")
    println(bird.toString())

    val mycls = MyClass()
    mycls.number = 234
    
}

'Coding > Kotlin' 카테고리의 다른 글

Getter & Setter  (0) 2022.01.26
보조 생성자  (0) 2022.01.26
클래스  (0) 2022.01.26
함수 파라미터  (0) 2022.01.26
Default parameters(기본인수)  (0) 2022.01.25