[Android APP] feat. Kotlin(71)
-
16. lateinit과 게터, 세터(getter, setter)
코틀린에서 변수를 만들 때는 항상 초기화를 해줘야한다. 하지만 생성할 때 초기화를 하지 않고 나중에 하는 방법이 있다. lateinit을 사용하면 나중에 init 안에서 초기화하겠다 라고 선언해주는 것과 같다. 위와 같이 코드를 작성하면 에러가 발생한다. Exception in thread "main" kotlin.UninitializedPropertyAccessException: lateinit property owner has not been initialized at com.example.myapplication.Car.getOwner(KotlinBasics.kt:13) at com.example.myapplication.KotlinBasicsKt.main(KotlinBasics.kt:6) at c..
2022.03.07 -
15. 멤버 변수 - 기능과 생성자
Person이라는 클래스를 사용해보자. 클래스 안에 함수인 멤버 함수를 사용해본다. Person클래스 안에 age, hobby라는 멤버 변수를 만들고, 취미를 출력할 수 있는 stateHobby 멤버함수를 만들어준다. Person클래스의 파라미터에는 이름을 뜻하는 firstName, lastName을 받아오기 때문에 멤버 변수 age, hobby에 대한 정보가 없다. 따라서 main에서 객체의 나이와 취미를 설정해준다. Person클래스 안에 멤버 함수와 생성자를 통해 나이, 취미에 대한 실행 코드를 만들어주고 main함수에서 생성 및 정의를 진행한다.
2022.03.06 -
14. 변수 영역과 섀도잉
아래 코드에서 변수의 영역을 알아보도록 하자. myFuction함수가 받는 (a:Int)의 a는 파라미터이고, 그 파라미터를 받아오면 함수 안에 a라는 변수에 값이 들어가게 된다. 따라서 출력되는 a는 파라미터가 아니라 파라미터의 값을 받아온 변수 a가 출력된다. 다음은 main에 있는 b(3)와 함수에 정의되어 있는 b(a)는 다른 변수이다. myFunction를 호출할 때 5라는 값이 들어있는 파라미터 a를 받아오기 때문에 함수 안에 있는 변수 b의 값은 main에 있는 변수 b 즉 3이 아닌 5가 되는 것이다. 즉 변수는 그 함수 스코프 안에서 또는 클래스 내에 보인다.
2022.03.06 -
13. 클래스 초기화와 생성
우선 프로퍼티가 뭔지를 알아보자 프로퍼티(property)는 일부 객체 지향 프로그래밍 언어에서 필드(데이터 멤버)와 메소드 간 기능의 중간인 클래스 멤버의 특수한 유형이다. 프로퍼티의 읽기와 쓰기는 일반적으로 게터(getter)와 세터(setter) 메소드 호출로 변환된다. 사람의 이름을 나타내주는 Person클래스를 제작해보자. 자동자, 즉 사람이 클래스이고 클래스 안의 속성 성, 이름을 넣어준다. 간단하게 이름을 나타내주는 메소드를 작성했다. 이제 person오브젝트를 만들어보자. main함수에 간단하게 이름을 넣고 돌리면 생성된 것을 확인할 수 있다. 이와같은 방법으로 아래 코드처럼 프로퍼티를 가진 여러 명의 사람을 생성할 수 있다.
2022.03.06 -
12. 객체 지향 프로그래밍(OPP)
OPP란 객체 지향 언어로써 Java, C#, Kotlin등이 있다. 5가지 기본 개념으로는 1. 변수와 타입(vairables and type) 2. 흐름 제어(control flow) 3. 함수(function) 4. 컬렉션(collection) 5. 상속을 포함한 클래스와 객체(classes and objects)가 있다. 변수와 타입 1. 저장공간에서 위치이다. 2. 저장공간을 위해 고유의 이름을 정의해야한다. 흐름 제어 1. 조건이 맞는 경우에만 코드를 실행한다. 2. 조건이 맞는 경우 코드를 반복실행한다. 함수 1. 코드를 나눠주고 필요시 코드 블록을 실행시켜준다. 2. 코드를 재사용하는데 유용하다. 컬렉션 1. 컬렉션은 많은 요소를 한 군데에 저장하게 해주고 흐름제어의 도움을 받아 여러 요소..
2022.03.06 -
11. 엘비스 연산자, non-null 타입
엘비스 연산자는 Nullable이 빈칸이면 설정한 디폴트 값을 넣어주는 연산자이다. ?: 아래 코드와 같이 name이라는 변수 안에는 nullableName값이 들어가있고 그 값은 null이다. 이때 name을 출력해준다면 null값이 들어있는 nullableName의 기본 디폴드 값을 엘비스 연산자로 Guest를 넣어줬기 때문에 null대신 Guest가 출력된다. ============================================================================ non-null타입 !! 널러블 타입이 null값이면 널 포인터 제외가 발생한다. non-null타입은 변수에 값이 있다고 확신할 때만 사용한다. 위와 같은 코드는 nullableName이 null이 아니라..
2022.03.06