728x90
Fast campus 패스트캠퍼스 내돈내산 안드로이드 앱 개발 코틀린편.시작 세팅
1. Android 는 Java 기반의 프레임워크이다.
2. Kotlin 은 Java 기반위에서 돌아간다.
3. Kotlin 은 함수형 프로그래밍 언어이지만, Android 프로그래밍에서는 OOP (객체지향프로그래밍) 구조로 되어있다.
코틀린을 배우는 이유
자바를 주 언어로 사용해서 자바로 계속해서 개발하면 좋겠지만
구글에서 코틀린을 안드로이드의 공식 언어로 추가된 이후
채용에서도 코틀린을 선호하게 되었다.
+ 경력..
2017년 코틀린이 안드로이드의 공식 언어로 추가
2019년 Google I/O 이후
2019 Google I/O에서 Kotlin first로 선언했다.
그리고 구글에서는 자바 보다 코틀린에 대해 공식 지원을 한다고 했다.
안드로이드 운영체제와 플랫폼
리눅스 커널과 자바 API 프레임워크가 결합된 형태
현재 JVM 대신에 안드로이드 런타임 (Android RunTime, ART) 사용
안드로이드 스튜디오에서 코틀린 Test 세팅
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<Button
android:id="@+id/btnTest"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Test Button" />
<EditText
android:hint="Test EditText"
android:id="@+id/edtTest"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPersonName" />
<ScrollView
android:background="#AFFFF0"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/txtMessage"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="15dp"/>
</ScrollView>
</LinearLayout>
TestClass.kt
// 클래스에 open 키워드를 사용해서 클래스를 생성해야 상속을 받을 수 있다.
// 메소드 역시 open 키워드를 사용해서 정의해야 오버라이드가 가능하다.
// Any, Any? 최상위 타입
// Any : 컴파일시 Object로 변환
// Any? 코틀린 자료형이 Non-null과 Nullable한 타입 두가지 있다.
// Any도 마찬가지이다. Nullable 한 Any는 Any? 사용
//Unit
//자바에서 함수의 반환값이 없는 경우 반환 타입을 void로 기입한다.
open class TestClass(pFunc : (Any) ->Unit)
{
// Testclass 를 상속받았거나 그 안의 innerClass 에서
// println을 대처하기 위한 static 메소드
// companion object는 static이 아니며 static 처럼 보인다.
// companion object를 가진 클래스가 메모리에 적재되면서 함께 생성되는 동반 객체
// -> 클래스명.Companion 으로 접근 가능
// MyClass.Companion.prop 의 축약형 : MyClass.prop
companion object{
var println : (Any) -> Unit = {}
}
init {
println =pFunc
}
// 예제의 테스트 코드를 실행할 메소드
open fun doTest(){}
}
FirstTest.kt
class FirstTest (p : (Any)->Unit) : TestClass(p)
{
// ctrl + o
override fun doTest() {
println("firsttest")
}
}
테스트할 코틀린 코드를 작성
MainActivity.kt
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// 우리가 만든 예제들을 이곳에서 실행시킨다.
doTest(FirstTest(::WriteLn))
}
private fun doTest(o: TestClass){
o.doTest()
}
fun WriteLn( any : Any) {
// findById 하지 않고 자동으로 바인딩 한다.
txtMessage.text = "${txtMessage.text}${any.toString()}\n"
}
}
doTest 메소드 파라미터에 의존
코틀린 kt 파일 원리
실행시 JVM 이 FirstTest.kt -> FirstTestKt.class 파일로 변환
main 밖의 val 변수가 class 로 바뀌면서 멤버 필드에 위치하게 된다.
패스트 캠퍼스 강의
깃허브 출처
https://github.com/VintageAppMaker/FastCampusKotlin
댓글