코틀린 클래스 정의



클래스는 class 키워드를 사용하여 선언하며, 자신의 맴버 속성(변수)과 맴버 함수를 가질 수 있다.

예 ) class Friend(/**생성자 */){

// 클래스 내부.

}


클래스 접근 제한자.


final

: 클래스에 지정하면 서브 클래스(상속)를 만들 수 없다.

코틀린에선 클래스와 클래스 맴버 모두 기본적으로 final 이다.


open 

: final과 반대의 의미를 가진다. open을 지정한 클래스는 서브 클래스(상속가능)를 만들 수 있고

클래스 맴버에 open을 지정하면 슈퍼 클래스의 맴버를 서브클래스에서 오버라이딩 할 수 있다.

abstract

: 클래스에 지정하면 추상 클래스가 되며 인스턴스를 생성할 수 없다.(자바와 동일)

추상 클래스는 대개 구현 코드가 없는 추상 함수를 맴버로 갖지만, 구현 코그가 있는 맴버 함수도 같이

가질 수 있다. abstract 맴버 함수는 기본적으로 open이다.


클래스 상속

open을 사용하여 클래스를 상속할 수 있다.

클래스의 맴버변수, 맴버함수에 open을 사용하여 상속할 수 있다.

이때 서브 클래스에서는 overrride 하여 사용한다.





인터페이스 정의.


interface 키워드 사용한다. 구현코드가 없는 추상 함수를 갖지만, 구현코드가 있는 확장함수도 포함할 수 있다.




추상클래스 정의.


abstract 키워드 사용한다. 추상클래스를 상속받은 서브 클래스에서는 추상클래스의 추상 함수들을 반드시 오버라이딩 해야한다.


통합내용.

인터페이스와 추상 클래스는 상호 운용이 가능하고 둘다 접근제한은 open 이다.

추상 클래스는 하나만 상속이 가능하며 인터패이스는 여러개 구현이 가능하다.


object.


객체선언

: 클래스 대신 객체를 선언하고 생성

하나의 인스턴스만 생성하고 공유하는 싱글톤 구현

클래스 처럼 객체 선언에도 속성과 함수  및 초기화 블럭 사용. 단 생성자는 가질 수 없다.


동반객체

: 클래스 내부에 객체 선언을 하면 포함하는 클래스의 인스턴스를 생성하지 않아도 객체의 선언의 함수와 속성

을 사용할 수 있다. (static)

최상위 수준 함수를 사용해도 동일한 효과를 볼 수 있다.

자바에서의 static 처럼 companion object 하면 된다.(private 한 팩토리 함수)


객체표현식

:익명 객체를 생성하는 방법(익명 내부 클래스.)

리스너에 사용시 

test.setOnClickListener(object : View.OnClickListener {

        override fun onClick(v: View?) {

                       

            }

        })

        이런식으로 사용.


중첩 클래스와 내부 클래스.

클래스 내부에 선언된 클래스

:중첩 클래스 - 중첩클래스는 외부 클래스의 맴버를 참조할 수 없다.

:내부 클래스 - 내부 클래스는 외부클래스의 맴버를 참조할 수 있다.

inner 키워드 사용.

대이터 클래스.

: data 키워드를 지정하면 데이터 클래스가 된다.

기본 생성자에 속성을 지정해야 한다.



































'Kotlin > study' 카테고리의 다른 글

Retrofit, RxJava, AndroidProject  (0) 2019.01.30
isNullOrBlank or isNullOrEmpty  (0) 2018.11.19
코틀린 apply,let 함수  (0) 2018.08.24

+ Recent posts