반응형

Kotlin/Kotlin | Spring 학습기록 15

[Kotlin] Sealed Class를 이용한 무분별한 상속 확장을 방지하기

kotlin의 클래스와 메서드는 기본적으로 final이다. 따라서 어떠한 클래스의 상속을 허용하려면 클래스 앞에 open 변경자를 붙여주어야 한다. 상속을 사용하고 싶어서 open 변경자로 클래스를 열어주었는데, 외부에서 무분별하게 상속을 통해 기능을 확장시키는 건 막고 싶을 수 있다. 이러한 경우 Sealed Class를 이용하면 좋다. Sealed Class Operator 인터페이스의 구현체들인 Plus, Minus, Multi 클래스들이 있다. calc 함수는 when절을 이용하여 Plus, Minus, Multi인지 확인하고 결과를 반환하는 함수이다. 만약, 어떤 것에도 해당하지 않으면 else문을 작성해주어야 한다. else문이 없으면 위와 같이 컴파일 에러가 발생한다. 외부에서 Operato..

[Kotlin] 코틀린에서의 상속을 위한 키워드 open, override, super

Java에서는 extends로 상속 기능을 지원했었다. 하지만 kotlin에는 extends 키워드가 존재하지 않는다. 그렇다면 kotlin에서는 상속을 어떻게 사용할까? 코틀린에서의 상속을 구현하자! 코틀린에서는 부모 클래스 앞에 open 키워드를 붙여줌으로써 상속 기능을 사용할 수 있다. Fruit 부모 클래스와 이를 상속받는 Apple 자식 클래스 예제를 보자. class 앞에 open 키워드를 붙여줌으로써 다른 클래스에서 상속받을 수 있도록 열어주었다. 이렇게 해야 Apple 자식 클래스에서 Fruit 부모 클래스를 상속받을 수 있다. 또한, 부모 클래스의 함수를 자식 클래스에서 사용하기 위해서는 함수 앞에 open 키워드를 붙여주어야 한다. kotlin에는 extends 키워드로 상속하지 않고 ..

[Kotlin] mutableList로 List에서 수정과 삭제를 해보자

코틀린에서는 기본적으로 val, var 두 가지 변수를 제공해준다. 이 둘은 읽기 전용이냐, 수정이 가능하냐로 차이가 존재한다. 코틀린의 리스트도 마찬가지이다. 기본적으로 코틀린에서의 List는 add, remove와 같은 수정, 추가, 삭제 작업이 불가능하다. 코틀린에서 add, remove를 하기 위해선 List가 아닌 mutableList로 선언해주어야 한다. 참고로 mutableList는 List의 자식 클래스로써 상속 관계이다. 그렇기 때문에 List = mutableListOf()와 같이 선언하는 것도 가능하다. 하지만, 부모 클래스 타입의 변수는 자식 클래스의 메서드에 접근할 수 없으므로 아래와 같아 같이 코드를 작성해도 add, remove 등은 불가능하다. java에서의 List는 add..

[Kotlin] Java와 비슷하면서 다른 코틀린 문법 정리하기 (2)

1편은 아래 글을 참고하자. https://kth990303.tistory.com/312 [Kotlin] Java와 비슷하면서 다른 코틀린 문법 정리하기 (1) 코틀린은 제트브레인에서 개발한 자바와의 상호 운용이 100% 지원되는 언어이다. 네이버, 카카오, 우아한형제들 등 많은 기업들이 백엔드 언어로 코틀린을 선택한 만큼 인기있는 언어이기도 하 kth990303.tistory.com 이번 포스팅에선 1편에 이어서 java stream api와 유사한 코틀린의 Collections 함수들과 random, 물음표(null able operator)와 느낌표(not null operator), 코틀린 테스트 문법, 그리고 그 외 팁들에 대해 적어보려 한다. 아직 배우는 단계이므로 더 좋은 팁들이나 틀린 점들..

[Kotlin] Java와 비슷하면서 다른 코틀린 문법 정리하기 (1)

코틀린은 제트브레인에서 개발한 자바와의 상호 운용이 100% 지원되는 언어이다. 네이버, 카카오, 우아한형제들 등 많은 기업들이 백엔드 언어로 코틀린을 선택한 만큼 인기있는 언어이기도 하다. 이번 포스팅에서는 자바와 비슷하지만, 조금은 다르기도 한 코틀린 문법들을 나를 위해서 정리해보려 한다. 정적 메서드를 사용하기 위한 클래스가 필요없다 java에서는 utils 메서드를 만들기 위해 아예 utils 클래스를 만들어주어야 한다. 이는 main 함수에서도 마찬가지이다. 자바를 공부하는 사람이라면, 메인 클래스를 생성해준 후 psvm을 입력해주어 메인 메서드를 만드는 작업을 지겹도록 했을 것이다. 하지만 코틀린은 정적 메서드를 사용할 때 따로 클래스를 만들어주지 않아도 된다. 다음 코틀린 코드를 보자. 위와..

반응형