ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 확장함수
    Android 2024. 3. 18. 19:28

     

    다른 사람의 클래스를 참고할 때, 원하는 메소드를 추가하고 싶은 경우가 있을 것이다. 이때, 다른 사람의 클래스 내부에 내가 정의한 메소드를 넣는건 원본 클래스를 해치는 일이라 찜찜할 수 있다. 코틀린에서는 자바와 달리 외부에서 클래스의 메소드를 추가하는 기능을 제공하는데, 이때 사용하는 개념이 확장함수이다. 확장함수를 통해 원본 클래스의 일관성을 유지할 수 있다.

    fun main() {
        fun Student.getGrade() = println("등급: ${this.grade}") // 확장함수
        var student = Student("참새",5,"A+")
        student.displayInfo() // 이름: 참새, 나이: 5
        student.getGrade() // 등급: A+
    }
    
    class Student(name:String, age:Int, grade:String) {
        var name:String
        var age:Int
        var grade:String
    
        init {
            this.name=name
            this.age=age
            this.grade=grade
        }
    
        fun displayInfo() {
            println("이름: ${name}, 나이: ${age}")
        }
    }

     

    이때, main 함수에서 확장함수를 정의하여 불러쓸 수 있다. 이때, 확장함수는 Student 클래스 내의 grade 변수를 불러오는데, 만약 해당 변수가 public 형태가 아니라 private, protected 면 접근할 수 없다. 또한, 해당 확장함수는 하위 클래스에서 상속 개념으로 오버라이딩 해서 쓸 수 없다.

    'Android' 카테고리의 다른 글

    앱 아키텍처 - 챌린지 과제  (0) 2024.03.22
    MVC, MVP, MVVM, MVI  (0) 2024.03.19
    Scope Functions (let, with, also, apply, fun)  (0) 2024.03.16
    Pair,Triple 클래스  (0) 2024.03.15
    자료형변환, 업캐스팅, 다운캐스팅, Is 키워드  (0) 2024.03.15
Designed by Tistory.