1. 확장함수
: 기존 클래스에 쉽게 메소드 추가가 가능 //지금까지는 클래스에 원하는 메소드를 다 정의하고 시작했음
- 자바와 달리 외부에서 클래스의 메소드 추가 가능
(+) 내 목적을 위해 외부에서 관리해, 원본 클래스의 일관성 유지 가능
(-) 과도한 사용 시 가독성 해침
*주의사항
1) 확장함수는 public 멤버에만 접근 가능
2) private, protect 멤버에 접근하려면 클래스 내부 멤버함수 형태가 적합 //-> getter setter st인듯...
3) 클래스의 멤버함수처럼 상속할 수 없음 = 하위 클래스에서 확장함수를 리디파인(오버라이드) 불가능
fun String.isEmailValid(): Boolean {
val pattern = "[a-zA-Z0-9._-]+@[a-z]+\\.+[a-z]+"
return matches(pattern.toRegex())
}
*예시 : 이름 나이만 출력하는 displayInfo 메소드가 있는데, 추가로 등급까지 조회하려면
fun main() {
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
init {
this.name = name
this.age = age
this.grade = grade
}
fun displayInfo() {
println("이름은 ${name} 입니다")
println("나이는 ${age} 입니다")
}
}
2. 비동기 프로그래밍
: 여러 로직들이 완료 여부에 관계없이 실행됨
- 다양한 일을 한 번에 수행
* 동기 프로그래밍 : 순서대로 하나의 작업씩 수행하는 행위
- 순차적으로 수행하기 때문에 이전 작업의 영향을 받음
- 이전 작업이 완료되지 않으면 이후 작업을 수행할 수 없음
==> 반드시 동기적이지 않아도 되면 비동기적으로 수행하는 것이 좋음
'언어 > Kotlin' 카테고리의 다른 글
[Kotlin 문법 종합] 스레드 활용 실습 (@ 수정하기) (0) | 2024.03.08 |
---|---|
[Kotlin 문법 종합] - 쓰레드, 코루틴 (# 추가하기) (0) | 2024.03.06 |
[Kotlin 문법 종합] - 여러 인스턴스 리턴, 자신의 객체 전달 @@수정하기 (0) | 2024.03.06 |
[Kotlin 문법 종합] - 자료형 변환, 타입확인 @@@ 수정하기 (0) | 2024.03.06 |
[Kotlin 문법 종합] - Single-expression function, 싱글턴 (@@질문하기) (1) | 2024.03.06 |