[Android] 확장함수(Extension functions)

이도연·2023년 10월 1일
0

android studio

목록 보기
14/28
post-custom-banner

Java 와 달리 kotlin 에서는 확장함수를 이용하면 기존 클래스에 쉽게 메소드를 추가할 수 있다.

  • 과도하게 사용하면 코드의 가독성을 해칠 수 있다.
  • 원하는 메소드가 있지만 내가 설계한 클래스가 아닐때 외부에서 메소드를 관리
  • 내 목적을 위해 외부에서 관리하기 때문에 원본 클래스의 일관성 유지




// Student 클래스의 인스턴스를 생성. displayInfo() 함수를 호출하여 학생의 정보를 출력하고, getGrade() 함수를 호출하여 학생의 등급을 출력한다.
fun main() {
	// getGrade() 확장 함수 사용. 함수는 Student 클래스에 속하지 않지만 Student 클래스의 인스턴스에서 호출할 수 있다. 
    fun Student.getGrade() = println("학생의 등급은 ${this.grade} 입니다")
    var student = Student("참새", 10, "A+")
    student.displayInfo()
    student.getGrade()
}

class Student(name: String, age: Int, grade: String) {
    var name: String
    var age: Int
		var grade: String

	// student 클래스 내에서 init 초기화 블록을 통해 속성을 초기화한다. 생성자를 통해 전달된 값을 각 속성에 할당한다.
    init {
        this.name = name
        this.age = age
				this.grade = grade
    }

    fun displayInfo() {
        println("이름은 ${name} 입니다")
        println("나이는 ${age} 입니다")
    }
}

확장 함수는 기존 클래스의 멤버 함수처럼 호출할 수 있지만, 클래스의 내부에 직접 선언된 것이 아니라 외부에서 추가된 함수이다.
getGrade() 함수는 Student 클래스에 속하지 않고, 이 클래스의 인스턴스인 student에서 직접 호출된다.



fun [타겟 클래스].확장함수이름() = [함수 본문]

Student 클래스는 타겟 클래스
확장함수이름은 함수의 이름을 나타낸다. 여기서는 getGrade.
함수 본문은 확장 함수가 수행할 작업을 정의한다. 이 경우, 학생의 등급을 출력하는 작업이다.

post-custom-banner

0개의 댓글