이 글은 udemy 강의를 참고하여 작성하였습니다.
작성자 : 안동현
개발환경은 Windows, Android Studio입니다.
1. Kotlin의 함수
fun 키워드를 사용하여 함수를 선언하며, 괄호() 안에는 함수의 매개 변수를 넣어줍니다.
마지막에는 반환 타입을 명시해줍니다. 생략하면 자동으로 Unit 타입이 적용됩니다.
// Kotlin 함수 선언
fun 함수명(매개변수명:타입): 반환 타입 {...}
함수의 매개변수에는 var이나 val 키워드를 사용할 수 없습니다.
val이 자동으로 적용되며, 함수 안에서 매개변숫값을 변경할 수 없습니다.
fun cannotChangeParam(num: Int) {
num = 100 // Error!
}
2. Kotlin은 객체지향 프로그래밍 언어 : OPP
OOP : Object Oriented Programming
-> 클래스를 선언하고 객체를 생성해 멤버를 이용하는 객체지향 프로그래밍
안드로이드 앱은 SDK가 제공하는 클래스를 상속받아 개발하므로 주로 클래스를 다뤄서 개발합니다.
OOP의 특징 : 캡슐화, 다형성, 상속
* 캡슐화 : Capsulizatio
객체의 속성(data fields)와 행위(메서드, methods)를 하나로 묶고, 실제 구현 내용 일부를 외부에 감추어 은닉함.
* 다형성 : Polymorphism
같은 모양의 코드가 다른 기능을 하도록 만들 수 있는 특징 (Override 등)
* 상속 : Inheritance
자식 클래스가 부모 클래스의 멤버를 물려받는 것
클래스 선언
Java에서는 멤버가 없고, 선언부만 있는 클래스는 의미가 없습니다.
그러나, Kotlin에서는 클래스의 생성자를 본문이 아닌 선언부에 작성할 수 있어서
본문이 없는 클래스도 의미가 있습니다.
class CustomClass { }
아래의 예제 코드에서 캡슐화, 다형성, 상속을 모두 확인할 수 있습니다!
잘 찾아보세요~ 🥰
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val soldier1 = Soldier()
soldier1.getStatus()
}
}
class Soldier {
val name = "John"
val rank = "Private"
val missing = true
val dob = 1988
fun getStatus() {
var status = "$rank"
if (missing) {
status = "$status, SOLDIER IS MISSING"
} else {
status = "$status, READY FOR DUTY"
}
Log.i(tag: "STATUS", status)
}
}
3. Kotlin - Getter, Setter
Kotlin에서는 변수를 만들어주기만 해도, getter와 setter를 내부적으로 생성해줍니다.
또한, Kotlin에서는 기본적으로 Scope(범위)가 public으로 설정됩니다.
그래서 public 키워드는 생략해줘도 됩니다.
class CustomClass {
val immutable: String, // val : private field + public getter
var mutable: Int // var : private field + public getter + public setter
}
'GDSC HUFS 3기 > Android with Kotlin Team 4' 카테고리의 다른 글
[4팀] 11. (2) Kotlin을 위한 기본 문법 : 화면에 그려지는 디자인 요소 위젯 (0) | 2021.10.29 |
---|---|
[4팀] 11. (1) Kotlin을 위한 기본 문법 : 스코프 함수 (0) | 2021.10.26 |
[4팀] Section 7 - (2) : Kotlin - Object Oriented Programming (0) | 2021.10.05 |
[4팀] Section 6 : Kotlin - Decisions and Loops (2) | 2021.10.04 |
[4팀] Section 5 : Kotlin - Variables, Operators and Expressions (0) | 2021.10.04 |