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.
함수 본문은 확장 함수가 수행할 작업을 정의한다. 이 경우, 학생의 등급을 출력하는 작업이다.