클래스 선언

//함수 없이 속성만 가진 클래스 선언

class Person (var name:String, val birthYear:Int)

인스턴스 선언

var a = Person("박보영", 1990)

문자열 포맷 출력

println("안녕하세요, ${a.birthYear}년생 ${a.name}입니다")

//인스턴스의 변수를 문자로 오인할수 있기때문에 {}를 사용함.

생성자 init

class Person (var name:String, val birthYear:Int){

    init {

    //인스턴스 생성시 실행되는 구문.

    }

}

보조생성자 constructor

class Person (var name:String, val birthYear:Int){

    init {

    //인스턴스 생성시 실행되는 구문.

    }

    constructor(name:String) : this(name, 1997) {

    //보조생성자를 통해 인스턴스 생성시 실행되는 구문.

    //보조생성자는 초기화 되지 않은 변수를 생성자를 호출하여 초기화 해주어야 한다.

    }

}

상속 open

//상속을 위해서는 부모(슈퍼)클래스에 open을 붙여주어야 한다.

open class Animal (){}

class Dog() : Animal() {}

함수 오버라이딩 open/override

open class Animal{

    open fun eat {}

}

class Tiger : Animal() {

    override fun eat() {}

}

추상화 abstract

abstract class Animal {

    abstract fun eat()

}

class Rabbit : Animal {

    override fun eat() {}

}

인터페이스 Interface

//코틀린에서는 속성, 추상함수, 일반함수를 가질수 있음.

//추상함수는 생성자를 가질수 있지만, 인터페이스는 생성자를 가질수 없음.

//여러 인터페이스에서 같은 이름과 형태를 가진 함수가 있다면 오버라이딩 해주어야 함.

interface Runner {

    fun run() // 인터페이스는 구현부가 없다면 abstract로 간주.

}

interface Eater {

    fun eat() { } // 인터페이스는 구현부가 있다면 Open으로 간주.

}

class Dog : Runner, Eater{

    override fun run() {}

    override fun eat() {}

}

 

 

 

 

 

 

+ Recent posts