Language/Kotlin

    [Kotlin] isNullOrBlank vs isNullOrEmpty 헷갈리지말자

    오늘 포스팅에서는 string의 null과 공백을 비교하는 비슷하지만 다른 두 메서드에 대해서 알아보고자 한다. 아래 예시를 통해서 두 메서드의 차이를 알아보자. var a = "string" var b = "hyeon" var c = null var d = "" var e = " " isNullOrBlank fun CharSequence?.isNullOrBlank(): Boolean isNullOrBlank는 string 값이 null이거나 공백으로만 채워진 경우 true를 반환하는 함수 이다. 위 예시 string에 isNullOrBlank 메서드를 사용하면 출력값은 다음과 같다. var a = "string" var b = "hyeon" var c = null var d = "" var e = " ..

    [Kotlin] 코틀린의 sealed class 란?

    Sealed class 정의 sealed calss는 Super 클래스를 상속 받는 Child 클래스의 종류를 제한하는 특성을 갖는 클래스이다. 어떤 Super 클래스를 상속받는 하위 클래스는 여러 파일에 존재하기 때문에 컴파일러는 해당 Super 클래스를 상속받는 하위 클래스가 얼마나 있는지 알지 못한다. 하지만 sealed class 는 동일한 패키지에 정의된 자신의 하위 클래스들을 인지해 컴파일러에서 그 외 다른 하위클래스는 존재하지 않음을 알 수 있다. 아래 예시를 통해 해당 상황을 보도록 하겠다. abstract class DogState class Running : DogState() class Eating : DogState() class Barking : DogState() 강아지의 상태를..

    [Kotlin 문법] 스코프함수

    스코프함수 kotlin내에는 여러 스코프함수가 존재하는데 각 스코프함수가 어떤 경우에 사용해야하는지 헷갈려서 정리하기위해 관련 포스팅을 해보고자 한다. 1. 람다함수도 여러줄 가능하다. 2. 파라미터가 없으면 중괄호 안 구문만 써주면된다. 3. 파라미터가 1개라면 it을 대체해서 사용가능하다. 스코프함수의 종류 apply, run, with, also, let이 존재한다. 차근차근 어떨 때 사용할 수 있는지 알아보자 1. apply 인스턴스 생성 후 변수에 담기 전 초기화 과정 수행할 때 사용한다. 리턴으로 자신의 인스턴스를 리턴한다. 2. run 이미 인스턴스가 만들어진 후 인스턴스의 함수나 속성을 scope내에서 사용해야할 때 유용하다 3. with run과 동일하다. 하지만 참조 연산자를 param..

    [Kotlin 문법] 오버라이딩과 추상화

    오버라이딩과 추상화 오버라이딩이란? 서브클래스가 슈퍼클래스를 상속받게되면 슈퍼클래스 안에 있는 함수와 동일한 이름의 함수를 가질 수 없다. 같은이름 다른 기능의 함수를 만들려면 override를 반드시 해줘야한다! => 즉 슈퍼클래스의 메서드를 서브클래스에서 재정의하는 것을 오버라이딩이라 한다. 슈퍼클래스의 함수에 open을 붙이면 서브클래스에서 오버라이딩이 가능하다. fun main() { Tiger().eat() } open class Animal{ open fun eat() { println("음식을 먹습니다.") } } class Tiger : Animal() { override fun eat() { println("고기를 먹습니다.") } } 위와같이 Animal 클래스의 eat()메서드를 Ti..

    [Kotlin] 클래스와 상속

    클래스와 상속 클래스란? 간단히 말하면 어떤 변수와 그 변수를 사용하는 기능(메서드)들을 묶어둔 것이다. 클래스 기본구조 fun main() { Person("서현",22).introduce() } class Person(var name:String, var age:Int) { fun introduce() { println("안녕하세요 ${this.name}입니다 나이는 ${this.age} 입니다.") } } 다음과 같이 Person 클래스를 생성하고, introduce라는 메서드를 만들어서 사용할 수 있다. 클래스 생성자 생성자란? 새로운 인스턴스를 만들기위해 호출하는 함수로 초기화 기능과 인스턴스 생성시 수행할 구문을 작성 할 수 있다. 아래와 같이 init 함수 안에 생성시 초기화 할 구문을 넣어..