개발(Android)/kotlin syntax

[Kotlin syntax] Overriding, Abstract Class, Interface

shinyelee 2022. 4. 5. 14:49

[코틀린 문법] 오버라이딩, 추상 클래스, 인터페이스

Overriding(오버라이딩)

// Overriding(오버라이딩) //

// 기본적으로 서브 클래스에서는 수퍼 클래스와 동일한 함수를 만들 수 없으나
// -> 오버라이딩 -> 부모클래스의 메소드를 자식클래스에서 재정의 및 사용 가능
// 이미 구현이 끝난 함수를 서브 클래스에서 변경해야 할 때 사용

fun main() {

    var t = Tiger()

    t.eat()

    // 오버라이딩 전
//    음식을 먹습니다

    // 오버라이딩 후
//    고기를 먹습니다

}

// 수퍼 클래스 내 함수 앞에 open 붙이고
open class Animal2 {
    open fun eat() {
        println("음식을 먹습니다")
    }
}

class Tiger : Animal2() {
    // 서브 클래스 내 함수 앞에 override 붙이면 됨
    override fun eat() {
        println("고기를 먹습니다")
    }
}

Abstract Class(추상 클래스)

// Abstract(추상화) //
// 형식만 선언하고 실제 구현은 서브 클래스에 일임할 때 사용하는 기능

fun main() {

    var r = Carot()

    r.lead()
    r.response()
//    바니바니 바니바니
//    당근 당근
    
}

// Abstraction Class(추상 클래스) //
// 추상 함수를 포함하는 클래스
abstract class Game {

    // Abstraction Function(추상 함수) //
    // 선언부만 있고 기능이 구현되지 않은 함수
    abstract fun response()

    // 일반 함수(기능이 있음)
    fun lead() {
        println("바니바니 바니바니")
    }

}
// 추상 클래스는 일부 함수가 구현되지 않은 미완성 클래스
// -> 단독으로 인스턴스 만들기 불가능
// -> 서브 클래스에서 상속을 받아 추상 함수를 구현해야 함

// Animal 상속 받음
class Carot : Game() {

    // response 함수가 실제 동작되는 구현부
    override fun response() {
        println("당근 당근")
    }

}

Interface(인터페이스)

// Interface(인터페이스) //

// 서로 다른 기능들을 여러개 물려줘야 할 때 유용한 기능
// 추상함수 또는 일반함수를 가질 수 있음
// 생성자 가질 수 없음
// (추상함수는 생성자 가질 수 있다는 게 차이점)

fun main() {

    var d = Dogs()

    d.run()
    d.eat()

}

// 구현부 없는 함수
// -> 자동으로 abstract 함수로 인식
// (abstract 생략해도 됨)
interface Runner {
    fun run()
}

// 구현부 있는 함수
// -> 자동으로 open 함수로 인식
// (open 생략해도 됨)
interface Eater {
    fun eat() {
        println("음식을 먹습니다")
    }
}

// 서브 클래스 하나가 한 번에 여러 인터페이스를 상속 받을 수 있음
class Dogs : Runner, Eater {
    override fun run() {
        println("WADADA WADADA 달려")
    }
    override fun eat() {
        println("like hubba-hubba")
    }
}

참고

 

[입문편] 안드로이드를 위한 코틀린(Kotlin) 문법 - 인프런 | 강의

코틀린 문법 기초 강의입니다. 안드로이드 앱을 코틀린 언어로 개발하고 싶으신 분들을 위한 강의이고, 기초부터 튼튼하게 코틀린 문법을 재미있게 공부할 수 있습니다., - 강의 소개 | 인프런...

www.inflearn.com

 

반응형