Kotlin 추상 클래스(Abstract class), 인터페이스(Interface) 포스팅 썸네일 이미지

Kotlin/Syntax

Kotlin 추상 클래스(Abstract class), 인터페이스(Interface)

1. 추상 클래스(Abstract class) 추상 클래스는 동일하게 사용되는 프로퍼티나, 멤버함수는 사용할 수 있으며 동일한 기능의 다른 동작을하는 프로퍼티나 멤버함수는 오버라이딩하여 클래스의 따라 맞게 사용할 수 있다. 단, 추상 프로퍼티, 추상 멤버함수들을 모두 반드시 오버라이딩 해야만 한다. abstract class Animal { abstract var name: String var sex: String = "male" abstract fun howling(): String } class Dog : Animal() { override var name: String = "gogy" override fun howling() = "war" } class Cat : Animal() { override..

2020.10.04 게시됨

Kotlin static 이용 Companion Object 포스팅 썸네일 이미지

Kotlin/Syntax

Kotlin static 이용 Companion Object

1. static 역할 - Companion Object 기존 Java에서 사용하였던 static은 Kotlin에서는 존재하지 않는다. 하지만 Companion Object를 사용한다면 static 역할을 해낼 수 있다. 여기서 중요한 점은 static의 역할을 할 수 있다는 것이지 static인것은 아니다. class Book private constructor(var name: String) { companion object { var count: Int = 0 private set fun create(name:String) : Book { count++ return Book(name) } fun print() = println("$count") } } fun main() { Book.print() ..

2020.10.03 게시됨

Kotlin  Singleton pattern - object 포스팅 썸네일 이미지

Kotlin/Syntax

Kotlin Singleton pattern - object

1. 싱글톤 패턴(Singleton Pattern) 싱글톤 패턴(Singleton Pattern)이란 프로그램에서 어느 객체를 단 한개의 인스턴스만 만들수 있도록 보장 하는 인스턴스를 말한다. 하나의 인스턴스만을 갖어야함으로 기존 Java에서는 private을 사용하여 외부에서 접근하지 못하도록 제한하고, static을 사용하여 클래스 내부에서 생성된 동일한 인스턴스를 갖고오도록 하였다. 하지만 Kotlin에서는 object 키워드를 이용하여 객체를 만들 수 있는 수단이 존재하여 아주 간단하게 싱글톤 패턴을 구현할 수 있다. 2. Object Declarations object Book { lateinit var name:String var price: Int = 0 fun print() = printl..

2020.10.02 게시됨

Kotlin 접근 지정자(= 가시성 지정자, Visibility Modifiers) 포스팅 썸네일 이미지

Kotlin/Syntax

Kotlin 접근 지정자(= 가시성 지정자, Visibility Modifiers)

1. 가시성 지정자(Visibility Modifiers) 지정자 범위 private 해당 클래스 내부에서만 접근할 수 있다. protected private + 서브 클래스에서 접근할 수 있다. internal 같은 모듈 내에서 접근할 수 있다. public 어디서든 접근할 수 있다. Kotlin에서 기본 지정자는 public으로 생략 시 public이 된다. ※ internal 에서 모듈이란 함께 컴파일 된 kotlin 파일 집합을 의미한다. 이는 IntelliJ IDEA 모듈; Maven 프로젝트; Gradle 소스 세트 들이 될 수 있다. 2. 가시성 지정자 오버라이딩 open class Test { private val a = 1 protected open val b = 2 internal va..

2020.10.01 게시됨

Kotlin null, nullable 타입 포스팅 썸네일 이미지

Kotlin/Syntax

Kotlin null, nullable 타입

1. nullable 타입 ? Java에서는 참조 타입의 null을 넣을 수 있었다. 하지만 코틀린은 Int, Double, String 처럼 기본 타입도 참조 타입이지만, 모두 기본적으로 non-nullable 타입으로서 null을 가리킬 수 없다. null을 사용할 수 있게하기 위해서는 nullable 타입으로 정의해야하며 타입 뒤에 '?'를 붙인다. //var a:Int = null var a:Int? = null println(a) 2. 안전한 호출 연산자(Safe call operator) ?. 만약 변수를 nullable하도록 만드면 변수는 null을 갖을 수 있게 된다. 그렇다면 의도치 않게 클래스 참조 변수가 null을 갖고 있는 상태에서 프로퍼티나 멤버 함수의 접근하고자 시도할 수도 있다..

2020.09.23 게시됨

Kotlin 예외(Exception) 처리 포스팅 썸네일 이미지

Kotlin/Syntax

Kotlin 예외(Exception) 처리

1. 예외(Exception) 예외(Exception)란 프로그램 실행 중 예기치 못한 에러가 발생하는 경우이다. 이러한 예외가 발생하면 보통은 에러 메시지를 보여주며 프로그램이 중단되거나 강제 종료된다. 따라서 예외 처리를 통하여 사용자 입장에서 어떠한 이유 때문에 어떠한 에러가 발생하였는지 안내하거나 프로그램이 강제 종료되는 것을 방지할 수 있다. 2. 예외(Exception) 처리 예외 처리는 try ~ catch ~ finally 로 처리할 수 있다. try { var s = "ab" //var s = "75" println(s.toInt()) } catch(e: NumberFormatException) { println("error 발생 $e") } catch(e: Exception) { pri..

2020.09.21 게시됨

코틀린(Kotlin) 클래스 포스팅 썸네일 이미지

Kotlin/Syntax

코틀린(Kotlin) 클래스

1. 객체(Object) 서로 관련이 있는 속성(변수)들을 묶어 놓음으로써 고유한 속성들을 갖는 데이터 타입(객체)을 만들어 내는 것. val book = object { var name = "Horror Stories" val price = 32_000 } book.name = "Horror Stories3" // book.price = 25_000 val error println(book.name) println(book.price) 속성들도 마찬가지로 var로 선언한 name은 값을 변경 할 수 있지만 val로 선언한 price는 값을 변경하고자하면 에러가 발생한다. 객체의 속성들은 '.속성이름' 으로 접근할 수 있다. 2. 클래스(Class) 위에서 book이라는 객체(object)를 만들었다. ..

2020.09.18 게시됨

코틀린(Kotlin) 제어문(for, if, when, while) 포스팅 썸네일 이미지

Kotlin/Syntax

코틀린(Kotlin) 제어문(for, if, when, while)

1. 조건문 1-1. If if문 같은 경우 Java와 동일하다. if문의 경우 if [~ else if ~ else] 의 구조를 갖는다. 단, 기존의 if문과 다르게 조건에 따른 결과를 변수에 저장할 수 있으며, 따라서 삼항연산자는 없다. 1-2. when 기존 다른 언어에서 사용하던 switch문과 유사하다. 단, 기존의 switch문과는 다르게 조건으로 일련의 범위를 주거나 조건을 여러 개 줄 수 있다. 따로 break를 해줄 필요는 없으며 if문처럼 조건의 따른 결과를 변수에 저장할 수 있다. 1-3. 예제 (직접 수정해보며 실행해볼 수 있다. 로드가 안된다면 새로고침 or play.kotlinlang.org/) - 코틀린은 강제 형변환이 없기 때문에 Int형 a와 Long형 b가 동일한지 비교 ..

2020.09.17 게시됨