Study146 [Kotlin] 오브젝트 Object Object로 선언된 객체는 최조 생성 시 자동으로 생성되며, 이후에는 코드 전체에서 공용으로 사용될 수 있음. Companion Object Class 내에 오브젝트가 존재할 경우, 인스턴스끼리 해당 오브젝트를 서로 공유함. 예제 fun main() { println(Counter.count) Counter.countUp() Counter.countUp() println(Counter.count) Counter.clear() println(Counter.count) } object Counter{ var count = 0 fun countUp(){ count++ } fun clear(){ count = 0 } } 예제 결과 Listener 이벤트를 수신해서 출력하는 클래스(EventPrin.. 2022. 1. 6. [Kotlin] 스코프 함수 스코프 함수 스코프 함수의 경우 별도의 Scope에서 인스턴스의 변수와 함수를 조작할 수 있음. (apply, run, with, also, let) let, also의 경우 Scope 외부에서 동일한 이름의 변수나 함수가 존재할 때를 대비해 it과 같이 사용하기 위해 존재함. 예제 fun main(){ var a = Book("책1",10000).apply{ name = "[초특가]"+name discount() } a.pay() } class Book(var name:String, var price:Int){ fun pay(){ println("${name}의 가격은 ${price}원입니다.") } fun discount(){ price -= 2000 } } 결과 2022. 1. 5. [Kotlin] 고차함수 고차함수 다른 함수를 인자로 받거나 함수 실행의 결과를 함수로 반환하는 함수 예제 fun main(){ b(::a) // 일반 함수를 고차 함수로 변환하는 연산자 -> ::일반 함수명 val c: (String)->Unit = { str -> println("$str 람다함수") } b(c) } fun a(str:String){ println("$str a함수") } fun b(function: (String)->Unit){ //Unit is Not return function("b가 호출한") } 결과 2022. 1. 5. [Kotlin] 추상화 (abstract, interface) abstract 기존 추상화 개념과 같음. 예제1 fun main(){ var a = real_Man() a.run() a.sniff() } abstract class Man { abstract fun run() fun sniff(){ println("냄새를 맡는 중") } } class real_Man: Man(){ override fun run(){ println("달리는 중") } } 예제1 결과 interface abstract, open 등과 같은 키워드를 사용하지 않더라도 추론을 통해 자동 적용되며, 한 번에 여러 인터페이스를 상속 시킬 수 있음. 예제2 fun main(){ var a = Man() a.run() a.eat() } interface Runner { fun run() // eq.. 2022. 1. 5. [Kotlin] Class 상속 및 오버라이딩 방법 클래스 상속 Kotlin은 Default로 상속이 금지되어 있기 때문에 class 예약어 앞에 open을 사용해야함. 예제1 fun main(){ var a = Person("김민수",1996) a.introduce() var b = Dog("김민수",1996) b.introduce() b.bark() } open class Person (var name:String, var birthYear:Int){ fun introduce(){ println("안녕하세요. 저는${this.name}이고, ${this.birthYear}년에 태어났습니다.") } } class Dog (name:String, birthYear:Int): Person(name, birthYear){ fun bark(){ println(.. 2022. 1. 5. [Kotlin] 보조 생성자 인스터스 생성 시 보조 생성자(constructor)를 통해 생성자(init)를 실행시키기 이전에 필요한 동작을 수행할 수 있음. 예제 fun main(){ var a = Person("박보영",1990) var b = Person("장원영",2004) var c = Person("이루다") var d = Person("차은우") } class Person (var name:String, var birthYear:Int){ init{ println("${this.birthYear}, ${this.name}") } constructor(name:String): this(name, 1997){ println("보조 생성자를 통해 생성일자를 1997년으로 설정하였습니다.") } } 결과 2022. 1. 5. [Kotlin] label를 통한 다중 for문 종료 예제 fun main() { loop@for (i in 1..10){ for (j in 1..10){ if(i==1 && j==3) break@loop println("i : $i, j : $j") } } } 예제 결과 2022. 1. 5. [Kotlin] 조건문 when 사용법 예제1 : 조건에 따른 코드 수행 fun main() { doWhen(1) doWhen("Min") doWhen(123L) doWhen(1.5f) doWhen("aaa") } fun doWhen (a:Any){ when(a){ 1 -> println("정수 1입니다.") "Min" -> println("Min 입니다.") is Long -> println("Long 타입입니다.") !is String -> println("String 타입이 아닙니다.") else -> println("어떠한 조건도 만족하지 않습니다.") } } 예제1 결과 예제2 : 조건에 따른 결과 저장 fun main() { doWhen(1) doWhen("Min") doWhen(123L) doWhen(1.5f) doWhen("aa.. 2022. 1. 5. [Kotlin] Online Compile Site https://play.kotlinlang.org/ Kotlin Playground: Edit, Run, Share Kotlin Code Online play.kotlinlang.org 아래와 같이 코드를 입력한 뒤, 실행 버튼(Ctrl+F9)을 누르면 결과가 나타남. 2022. 1. 5. 이전 1 ··· 4 5 6 7 8 9 10 ··· 17 다음