다형성
·
Kotlin
다형성 (polymorphism)이란? 같은 이름을 사용하지만 구현 내용이 다르거나, 매개변수가 달라서 하나의 이름으로 다양한 기능을 수행할 수 있는 개념이다. Static Polymorphism 컴파일 타임에서 결정되는 다형성 단순하게 보면 메서드 오버로딩을 사용할 때 Dynamic Polymorphism 런타임 다형성 동적으로 구성되는 오버라이딩된 메서드를 사용할 때 오버라이딩 (overriding) 기능을 완전히 다르게 바꾸어 재설계 누르다 -> 행위 -> push() push()는 '확인' 혹은 '취소' 용도로 서로 다른 기능을 수행할 수 있다. 오버로딩(overloading) 기능은 같지만 인자를 다르게 하여 여러 경우를 처리 출력한다 -> 행위 -> print() ..
예외 처리
·
Kotlin
예외 (exception) 실행 도중의 잠재적인 오류까지 검사할 수 없기 때문에 정상적으로 실행이 되다가 비 정상적으로 프로그램이 종료되는 경우 운영체제의 문제 (잘못된 시스템 호출의 문제) 2. 입력값의 문제 (존재하지 않는 파일 혹은, 숫자 입력란에 문자 입력 등) 3. 받아들일 수 없는 연산 (0으로 나누기 등0 4. 메모리 할당 실패 및 부족 5. 컴퓨터 기계 자체의 문제 예외를 대비하기 위한 구문 try { 예외 발생 가능성 있는 문장 } catch (e: 예외처리 클래스명) { 예외를 처리하기 위한 문장 } finally { 반드시 실행되어야 하는 문장 } fun main() { val a = 6 val b = 0 val c: Int try { c = a / b println("After") ..
확장 함수
·
Kotlin
확장함수 클래스의 멤버 함수를 외부에서 더 추가할 수 있다. fun 확장대상.함수명(매개변수, ...): 반환값 { ... return } ExtensionFunction fun main() { val source = "Hello World" val target = "Kotlin" println(source.getLongString(target)) } // String을 확장해 getLongString 추가. (String은 Class인걸 생각하자) fun String.getLongString(target: String): String = if (this.length > target.length) this else target // this 키워드는 "hello world"를 지칭함 this는 확장 대상..
고차함수와 람다식
·
Kotlin
람다식이란? 익명 함수의 하나의 형태로 이름 없이 사용 및 실행이 가능 val multi: (Int, Int) -> Int = { a: Int, b: Int -> a * b } // 생략되지 않은 전체표현 val multi: (a: Int, b: Int) -> Int = { a, b -> a * b } // 람다식 매개변수 자료형의 생략 val multi = { a: Int, b: Int -> a * b } // 선언 자료형 생략 fun main() { val result: Int // val multi: (Int, Int) -> Int = { a: Int, b: Int -> a * b } val multi: (a: Int, b: Int) -> Int = { a, b -> println("$a, $b")..
내일배움캠프 12.21 TIL
·
Kotlin
lazy lazy 사용예시 fun main(){ var s1 = Student() s1.name = "참새" s1.displayInfo() s1.age = 10 s1.displayInfo() } class Student { lateinit var name:String var age:Int = 0 val address: String by lazy { println("address 초기화") "seoul" } fun displayInfo() { println("이름은: ${name} 입니다.") println("나이는: ${age} 입니다.") println("주소는: ${address} 입니다.") }} - by lazy 후 값을 입력해주는 방법으로 사용한다. - 사용하는 시점에 값을 초기화 하고 대입한다..
스코프 함수
·
Kotlin
람다함수의 특별한 케이스 val c: (String) -> Unit = { str -> println("$str 람다함수") println("2") println("3") } val calculate: (Int, Int) -> Int = { a, b -> println(a) // 람다함수도 println(b) // 여러구문 사용이 가능하다 a+b // 마지막 구문 a + b의 값을 Int형으로 반환한다. } 람다함수도 여러 구문을 사용할 수 있다. val a:() -> Unit = { println("파라미터가 없다,,") } 파라미터가 없는 람다함수는 실행할 구문들만 나열하면 된다. val c: (String) -> Unit = { println("$it 람다함수") } // 중괄호의 파라미터 이름을 ..