대딩 기록(~22.01)/안드로이드 공부노트

코틀린 기본 구문 (제어문, 클래스)

문과 해달 2021. 8. 16. 00:14

*참고저서 <오준석의 안드로이드 생존코딩>

1. 제어문

1) if 

자바의 if 문과 동일하다.

val max = if (a>b) a else b

와 같이 식으로도 사용이 가능하다.

 

2) when

자바의 switch 문에 대응하는 제어문이다. 조건을 상수값 하나로 주는 것은 당연히 가능하고

in 키워드를 이용해 범위로 주는 것도, else와 같이 지정하는 것도 가능하다. 자바에서는 각 case마다 break문이 필요했으나, 코틀린은 그렇지 않다. '숫자..숫자'의 문법은 두 숫자간의 범위를 말한다. 뒤 쪽 숫자도 포함하는 범위이다.

val x = 1

when (x) {
 1 -> println("x==1")
 2,3 -> println("x==2 or x==3")
 in 4..7 -> println("4~7")
 !in 8..10 -> println("not 8~10")
 else -> {
  println("else")
 }
}

if문처럼 식으로 사용할 수도, 함수의 반환값으로 사용할 수도 있다.

 

3) for

코틀린의 for문은 자바의 foreach에 대응된다. 파이썬의 for라고 말할 수도 있다.

감소식에서는 downTo, 증가 범위 설정시 step을 사용한다.

val numbers = arrayOf(1,2,3,4,5)

for (num in numbers) {
  println(num)
}

for (i in  10 downTo 0 step 2) {
  println(i)
}

4) while

자바의 while과 같다. do-while 문 역시 사용이 가능하다.

 

2. 클래스

코틀린에서 클래스를 선언하고 인스턴스를 생성하는 법은 다음과 같다.

class Person{

}

val person = Person()

인스턴스 생성 시 자바와는 다르게 new 키워드를 사용하지 않는다.

 

1) 생성자

코틀린에서 생성자를 작성할 때는 constructor라는 키워드를 사용한다.

class Person {
  constructor(var name:String) {
  	println(name)
  }
}

생성자 외에도 init블록에 작성한 코드가 가장 먼저 초기화된다.

class Person (var name:String) {
  init {
  	println(name)
  }
}

2) 프로퍼티

코틀린에서는 자바의 getter/setter등을 기본으로 제공하기에, 프로퍼티로 곧바로 접근하면 된다.

class Person (var name:String) {
}

val person = Person()
person.name = "홍길동"
println(person.name)

3) 접근 제한자

public: 전체 공개. 기본값

private: 현재 파일 내부에서만 사용 가능

internal: 같은 모듈 내에서만 사용 가능

protected: 상속받은 클래스에서 사용 가능

 

4) 상속

코틀린에서는 기본적으로 상속이 금지돼 있다. 상속을 하려할 시 부모 클래스를 open으로 명시해줘야 한다.

open class Animal(val name: String) {
}

class Dog(name:String): Animal(name) {
}

 

그 외에도 내부 클래스를 선언할 시 inner를 앞에 붙여줘야 하고, 추상 클래스의 경우 자바와 동일하다.