본문 바로가기
Language/Kotlin

Kotlin(코틀린) 개념잡자! 문법 및 사용법 정리(2)

by 나비와꽃기린 2019. 10. 31.
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

......뭐지

발행한 게시물의 내용이 삭제되어 있었음 ㅠㅠ OTL

 

이 글은 초보자를 위한 Kotlin 예제 200 을 참고하였습니다.

더욱 자세한 설명은 직접 책을 구매해서 확인하세요~

 

 

1. 함수 간단히 쓰기

fun function() : Double{
 return 3.0 + 7
 }
 //위와같이 문장이 하나뿐인 블록은 =를 사용하여 줄여쓸 수 있다.
 fun function() : Double = 3.0 +7
 //3.0+7이라는 값은 Double타입을 추론해 낼 수 있으므로(!) 반환타입을 생략 가능
 fun function() = 3.0 + 7

 

2. void와 대응하는 Unit

fun celsiusToFah(celsius:Int) : Unit {
 println(celsius * 1.8 +32)
 }
 //반환값이 없을 때 함수의 반환타입으로 'Unit'을 사용하는데 이는 생략이 가능하다.
 //함수의 반환타입을 생략하면 자동으로 Unit이 되고 문제없이 컴파일된다.
 //자바의 void에 대응하는 개념이라고 생각하면 된다.

 

3. Object

fun main(args:Array<String>){
	val person = object{
    	val name : String ='홍길동'
        val age : Int = 30
    }
    println(person.name)
    println(person.age)
}

 

4. 클래스에 내장된 함수 '멤버함수'

class Building{
 	var name = ""
 	var date = ""
   	  fun print(){
    	println(this.name)
    	println(this.date)
   	  }
 }
 //Building 클래스 안에 print 함수가 내장되어 있는데 이렇게 클래스에 내장된 함수를 멤버함수라고 부른다

 

 

5. 상속클래스에 'open'

//open키워드를 사용해 Person 클래스를 다른 클래스에서 상속할 수 있다.
//즉 open은 해당 클래스의 상속을 허용해준다는 의미
//코틀리은 자바와 달리 클래스 선언이 기본적으로 final로 되어있다(상속에 폐쇠적이다)
//따라서 상속을 위해서는 'open' 키워드를 작성해줘야 한다.
open class Person(val name:String,val age:Int)

class Student(val name:String,val age:Int,val grade:Int) : Person(name,age)

//Person 클래스를 상속하여 새로운 Student 클래스를 정의했다.

 

6. 오버라이딩

자바에서는 오버라이딩 시 @Override 어노테이션을 붙이지만, 코틀린에서는 override 키워드를 붙인다

프로퍼티도 오버라이딩이 가능하다.

open class AAA{ // open키워드를 사용하여 상속허용
	open var number = 10 //number 프로퍼티도 상속허용
    get() { println("AAA GET함수") return field }
    set(value) { println("AAA SET함수") field = value }
}

class BBB : AAA(){ //AAA클래스를 상속받음
 override var number : Int
  get() { println("BBB GET함수") return super.number }
  set(value) { println("BBB SET함수") super.number = value }
 }
 
 fun main(args:Array<String>){
   val test = BBB()
   test.number = 5
   test.number
 }
 
 
 //실행결과
BBB SET함수
AAA SET함수
BBB GET함수
AAA SET함수

 

7. Any클래스

모든 코틀린 클래스는 Any클래스를 상속한다.

Any클래스에는 세가지 멤버함수가 있다.

equals : ==연산자를 오버로딩 하는 함수

hashCode : 객체 고유의 해시코드를 반환하는 함수

toString : 객체 내용을 String 타입으로 반환하는 멤버함수

 

 

8. 엘비스연산자 ?:

//엘비스연산자는 왼쪽의 피연산자가 null이 아니면 그 값을 그대로 쓰지만, null이라면 우측의
//피연산자를 대입하는 연산자다.

var number :Int? = null
println(number ?: 0)
//number에 null이 지정되어 있으므로 출력값은 0 이 된다.

 

9. 확장함수

정리가 잘 되어있어서 해당 포스팅에서 참고!

https://tourspace.tistory.com/104

 

[Kotlin] 코틀린 확장함수와 프로퍼티, 가변인자, 중위함수

이 글은 Kotlin In Action을 참고 하였습니다. 더욱 자세한 설명이나 예제는 직접 책을 구매하여 확인 하시기 바랍니다 3.3 확장함수 확장함수 (Extension Function)는 클래스의 멤버 메서드처럼 호출되지만 클래..

tourspace.tistory.com

 

10. 객체선언 Object, 싱글톤

object Person  // object 선언!
{
	var name: String = ""
	var age: Int = 0
	fun print()
	{
		println(name)
		println(age)
	}
}

fun main(args: Array<String>)
{
	Person.name = "Singleton"
	Person.age = 45
	Person.print()
}

 

프로그램 전체에서 공유할 수 있는 하나뿐인 객체가 필요할 때 위처럼 사용할 수 있다.

object 키워드 덕에 자바에서 작성해야만 했던 싱글톤 패턴 코드를 더 이상 쓰지 않아도 되게 되었다.

그저 일반 클래스를 선언하듯이 프로그램 전체에서 단 하나만 존재하는 객체를 편하게 만들 수 있다.