Kotlin

추상클래스

공부처음하는사람 2023. 12. 25. 02:41

추상클래스란

Abstract Class는 선언 등의 대략적인 설계 명세와 공통의 기능을 구현한 클래스이다.
추상이란말은 구체적이지 않은 것을 나타낸다. 추상클래스를 상속하는 하위 클래스에서
추상클래스의 내용을 더욱 구체화시켜야한다.

abstract라는 키워드와 함께 선언하며 추상클래스로부터 일반적인 객체를 생성하는 방법으로 인스턴스화될 수 없다.
다만 추상클래스를 상속하는 하위 클래스가 어떻게 만들어야하는지를 나타내는 용도로 사용된다.

abstract 사용 예시

// 추상클래스, 주 생성자에는 비추상 프로퍼티 선언의 매개변수 3개가 있음
abstract class Vehicle(val name: String, val color: String, val weight: Double) {
    // 추상 프로퍼티(반드시 하위 클래스에서 재정의해 초기화해야 함)
    abstract var maxSpeed: Double

    var year = "2023"

    // 추상 메서드 (반드시 하위 클래스에서 재정의해 초기화해야 함)
    abstract fun start()
    abstract fun stop()

    // 일반 메서드
    fun displaySpecs() {
        println("Name: $name, Color: $color, Weight: $weight, Year: $year, Max Speed: $maxSpeed")
    }
}

// Vehicle 클래스는 객체를 생성할 수 없고 탈것에 대한 기본 설계 역할을 한다.
// 추상클래스는 open키워드가 필요없다. 자체적으로 상속과 오버라이딩을 허용한다.

class Car(name: String, color: String, weight: Double, override var maxSpeed: Double) : Vehicle(name, color, weight) {

    override fun start() {
        println("Car Started")
    }

    override fun stop() {
        println("Car Stopped")
    }
}

class Motorcycle(name: String, color: String, weight: Double, override var maxSpeed: Double) :
    Vehicle(name, color, weight) {

    override fun start() {
        println("Bike Started")
    }

    override fun stop() {
        println("Bike Stopped")
    }
}

fun main() {
    val car = Car("SuperMatiz", "yellow", 1110.0, 270.0)
    var bike = Motorcycle("DreamBike", "red", 130.0, 240.0)

    car.year = "2008"

    car.displaySpecs()
    car.start()
    bike.displaySpecs()
    bike.start()
}

 

 


 

 

추상클래스를 왜 사용하는지에 대해

 

http://wiki.hash.kr/index.php/%EC%B6%94%EC%83%81%ED%81%B4%EB%9E%98%EC%8A%A4

 

추상클래스 - 해시넷

추상클래스(abstract class)는 1개 이상의 추상메소드를 멤버로 가지고 있는 클래스를 말한다. 추상클래스는 추상메소드를 포함하고 있다는 점을 제외하면 일반 클래스와 모든 점이 동일하며 생성

wiki.hash.kr

 

 

'Kotlin' 카테고리의 다른 글

제네릭  (2) 2023.12.25
인터페이스  (1) 2023.12.25
지연초기화  (1) 2023.12.25
프로퍼티 (Getter / Setter)  (0) 2023.12.24
캡슐화  (0) 2023.12.24