본문 바로가기

kotlin

코틀린 : 클래스와 인터페이스

클래스와 인터페이스

 

1. 클래스의 구조

class 클래스이름 타입 파라미터( 주 생성자의 매개변수 ){

   프로퍼티

   생성자

   메소드

}

 

=> 타입 파라미터는 상위 클래스 이름과 구현해야하는 인터페이스 이름으로 생략 가능

=> ()는 주생성자의 매개변수인데 생략 가능

=> 프로퍼티는 인스턴스의 특성을 나타내기 위한 저장소

=> 생성자는 인스턴스를 생성할 때 호출하는 특별한 목적의 메소드

=> 메소드는 작업을 수행하기 위한 코드의 모임으로 함수라고도 한다.

 

2. 인스턴스 생성을 위한 생성자 호출 

생성자(매개변수 대입) // new 를 사용하지 않는다

 

3. Constructor(생성자)

=> 인스턴스를 생성하기 위한 특별한 목적의 메소드

=> 호출을 할 때는 클래스 이름 (매개 변수)의 형태

=> Kotlin은 생성자를 두가지로 나눈다

=> 주생성자 Primary Constructor와 보조 생성자 Secondary Constructor로 구분

=> Primary Constructor는 만들지 않으면 매개 변수가 없는 Primary Constructor를 제공을 합니다.

=> 기본적으로 제공 되는 Primary Constructor가 있는데 개발자가 새로운 Primary Constructor를 만들면 제공되는 것은 없어진다.

 

1) primary constructor 생성

class 클래스이름 constructor(매개 변수 나열) {

 

}

=> Constructor는 생략 가능

=> 매개 변수를 작성할 때 앞에 val이나 var을 붙이면 클래스의 프로퍼티가 된다

=> 실행하는 문장을 작성할 수 는 없다!

=> 기본 값 설정 하는 것은 가능!

=> primary constructor를 만들고 secondary constructor를 만들지 않으면 인스턴스를 생성할 때 반드시 primary constructor 형식에 맞춰서 생성자를 호출해야한다.

 

//MyClass 생성 - 설계도나 모델하우스의 개념

class MyClass {

}

//이렇게 Priamry constructor를 만들면
// 생성자 호출할 때 매개 변수에 해당하는 데이터를 대입해야 한다.
// num 앞에 val이나 var가 없어서 num은 생성자의 지역변수
class MyClass1 constructor(num:Int) {

}

//num이 MyClass2의 프로퍼티가 된다. var나 val이 추가 됨!!!
class MyClass2 constructor(var num:Int) {
    //보조 생성자
    constructor(num:Int, name:String) {
        this.num = num
    }
    init{
        //인스턴스를 생성할 때 공통으로 수행해야 하는 작업이 있으면
        // 이 블럭에 작성하면 된다!
        println("생성자 호출 하면 그 이후 자동으로 호출")
    }
}

fun main(args : Array<String>) {
    //MyClass 의 인스턴스 생성 - 인스턴스가 실제로 사람이 살 집
    val 인스턴스이름 : MyClass = MyClass()
    //MyClass1 의 인스턴스 생성
    val 이름1 : MyClass1 = MyClass1(10)
    // 이름1.num // 에러

    val 이름2 : MyClass2 = MyClass2(30)
    이름2.num // 에러가 발생하지 않음

    val 이름3 : MyClass2 = MyClass2(30, name:"Park")
    이름3.num // 에러가 발생하지 않음

}

 

2) init 블럭

=> 클래스 안에 init{코드}의 형식으로 작성

=> 생성자가 호출되고 난 후 호출 되는 코드 블럭

 

3) Secondary constructor

=> 클래스 내부에 constructor라는 예약어 함께 생성

constructor (매개 변수 나열) {내용}

매개변수에 val이나 var 붙일 수 없다!

=> 보조 생성자를 만드는 이유는 인스턴스 생성을 다양한 방법으로 할 수 있도록 하기 위해서!

=> secondary constructor를 만든다는 것은 보조생성자를 여러개 만드려는 의도이다!

 

4) 생성자는 매우 중요

=> Android 앱을 만들 때는 직접 클래스를 만들기도 하지만 초반에는 Android SDK 

(API - Android App을 제작하기 위해서 자주 사용하는 클래스를 Android에서 제공하는 것 ) 에서

제공하는 클래스를 이용해서 인스턴스를 만들어서 사용하거나 상속받아서 사용

클래스의 사용법은 Document를 읽어가면서 익혀야한다.

 

어떤 클래스의 Document를 읽을 때는 어떤 생성자가 있는 지 혹시 생성자가 없지는 않은지 확인을 제일 먼저 해야한다.

 

 

'kotlin' 카테고리의 다른 글

코틀린 : 변수  (0) 2020.10.15
코틀린: 차근 차근 시작하기 :-)  (0) 2020.10.15
코틀린 : 제어문의 개념  (0) 2020.10.14
코틀린 : 연산자의 개념  (0) 2020.10.14
코틀린: Collection  (0) 2020.10.14