클래스와 인터페이스
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 |