반응형

클래스 선언

//1. 클래스 선언 : 생성자 사용하여 초기값 받기
class Person {
    //생성자
    constructor(name: String){
        println("이름: " + name)
    }
}
val person = Person()
 
//2. 클래스 선언 : 프로퍼티 사용하여 초기값 받기
class Person(name: String, age: Int) {
    //초기화
    init {
        println("이름: ${name}, 나이: ${age}")
    }
}

 

접근 제한자

  • public : 전체 공개(기본값)
  • private : 현재 파일 내부에서만 사용가능
  • internal : 같은 모듈 내에서만 사용가능
  • protected : 상속받은 클래스에서 사용가능
class MyClass {
    val a=1 //public
    private val b=2
    protected val c=3
    internal val d=4
}

 

상속(open)

  • 사용하지 않을때 : this type is final, so it cannot be inherited from 문구 나옴
//open키워드를 사용하여 상속가능하게 선언
open class Parent(val name: String) {
    //생성자
    constructor(name: String){
        println("이름: " + name)
    }
}

//부모의 기본 생성자의 인자를 동일하게 사용해서 바로 초기화가 될 수 있게 선언해야 함
class Child(name: String) : Parent(name) {    
}

 

내부클래스

//내부 클래스 : inner사용, 외부 클래스 참조가능
class MyClass {
    var num = 10
 
    inner class InClass {
        fun func(){
            num = 20
        }
    }
}

//사용
MyClass().InClass().func()

 

추상클래스(abstract)

//추상 클래스
abstract class AbClass {
    abstract fun abFunc()//추상메서드
    fun func2(){
    }
}

//추상 클래스를 상속시 미구현 메서드를 구현해야함
class MyClass : AbClass(){ 
    override fun abFunc() {//추상메서드 구현
        println("구현한 추상메서드")
    }
}

 

데이터(data) 클래스

  • 기본 생성자에는 최소 하나의 파라미터가 있어야 한다.
  • 데이터 클래스는 abstract, open, sealed, inner가 되면 안 된다.
data class Student(var school: String, var age: Int, var name: String)
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기