YSHUSH

추상클래스(abstract class) 본문

Coding/Kotlin

추상클래스(abstract class)

코딩; 2022. 1. 27. 08:50

 

추상클래스는 일반 메소드와 추상 메소드 모두 포함시킬 수 있다.

 

예제1

Printer class와 myPrinter 두 개의 클래스가 있을때 객체 생성 방법으로 달리 적어보면 

abstract class Printer{
    abstract fun print()
    fun method() = println("Printer method()")
}

class myPrinter:Printer(){
    override fun print() {
        println("출력합니다")
    }
}

이렇게 적을 수 있다.

abstract class Printer{
    abstract fun print()
    fun method() = println("Printer method()")
}

val myPrinter = object : Printer(){     // 객체 생성
    override fun print() {
        println("myPrinter print")
    }
}

함수 호출부

fun main(args: Array<String>) {

//    val prt = myPrinter()
//    prt.print()
    myPrinter.print()

}

 

예제2

Vehicle class(abstract)

// 추상클래스 - 일반메소드 + 추상메소드
abstract class Vehicle(val name:String, val color:String, val weight:Double){

    // abstract property(추상변수)
    abstract var maxSpeed:Double

    var year = "2019"

    abstract fun start()
    abstract fun stop()

    fun displaySpecs(){
        println("Name:$name, Color:$color, Weight:$weight, Year:$year, Max Speed:$maxSpeed")
    }
}

 

Car class

class Car(name:String, color:String, weight:Double, override var maxSpeed: Double):Vehicle(name, color, weight){
    override fun start() {
        println("자동차 부아앙~")
    }
    override fun stop() {
        println("자동차 끼이익!")
    }
}

오버라이드 될 변수는 생성자 적는 공간에 적어준다

 

Motorcycle class

class Motorcycle(name:String, color:String, weight:Double, override var maxSpeed: Double):Vehicle(name, color, weight) {
    override fun start() {
        println("오토바이 부웅~")
    }
    override fun stop() {
        println("오토바이 끽!")
    }
}

 

함수호출부

fun main(args: Array<String>) {

    val car = Car("SuperCar", "yellow", 1100.0, 300.0)
    val motor = Motorcycle("DreamBike", "black", 187.0, 180.0)

    car.year = "2020"

    car.start()
    car.stop()
    motor.start()
    motor.stop()
    
}

 

 

 

상속받은 함수 오버라이드 하는법

1. 상속받는 클래스를 정의하면 빨간선이 뜬다.

2. 빨간선 위에 마우스 포인터 or alt + Enter키 해준다.

3. 이런 창이 뜨면 '멤버구현'을 눌러준다.

4. 오버라이드를 원하는 부분을 선택해준다.

5. 오버라이드 완료!

'Coding > Kotlin' 카테고리의 다른 글

클래스 상속  (0) 2022.01.27
Interface  (0) 2022.01.27
상속  (0) 2022.01.27
가위바위보 게임  (0) 2022.01.26
Lazy  (0) 2022.01.26