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