Kotlin 추상클래스 Abstract Class

Kotlin 추상클래스

  • 추상 메서드는 구현되지 않은 메서드를 의미한다.
  • 추상 클래스는 추상 메서드를 가지고 있는 클래스를 의미한다.
  • 추상 클래스는 구현 되지 않은 추상메서드를 가지고 있기 때문에 완벽한 설계도라고 할 수 없다.
  • 이 때문에 추상클래스를 통해서는 객체를 생성할 수 없다.
  • 상속을 통해서 구현가능하다.

추상 클래스의 상속

  • 추상 클래스는 완벽한 클래스가 아니기 때문에 객체를 생성할 수 없다.
  • 객체를 생성하려면 추상 클래스를 상속받은 클래스를 만들고 추상 메서드를 구현하여 자식클래스를 통해 객체를 생성해야 한다.
  • 추상 클래스의 목적은 자식 클래스에서 메서드를 Overriding 을 위한 클래스이다.

fun main() {
val obj1 = Super1() // 추상클래스는 직접 객체를 생성할 수 없으므로 여기서 에러가 발생한다.
testFun1(obj1)

}

open abstract class Super1 {
fun method1() {
println("Super1 method1 입니다.")
}
open abstract fun method2()
}

Kotlin: Cannot create an instance of an abstract class

추상 클래스 사용

자식 클래스에서 메서드를 Overriding 을 강제하기 위해서 사용한다.
구현되지 않은 메서드를 추상 메서드라고 부르며, 추상 메서드를 가지고 있는 클래스를 추상 클래스라고 부른다.

fun main() {
val obj1 = Sub1()
testFun1(obj1)
}

open abstract class Super1 {
fun method1() {
println("Super1 method1 입니다.")
}
open abstract fun method2() {
println("Super1 method2 입니다.")
}
}

추상 메서드는 구현하지 않아야 하므로 추상메서드에서 일반 메서드 처럼 구현 부를 작성하면 아래와 같은 에러가 발생한다.


Kotlin: A function 'method2' with body cannot be abstract


fun main() {
val obj1 = Sub1()
testFun1(obj1)
}

open abstract class Super1 {
fun method1() {
println("Super1 method1 입니다.")
}
open abstract fun method2()
}

// 부모클래스에서 추상 메서드가 있는데,
// 자식클래스에 구현하지 않을 경우 에러가 발생한다.
class Sub1 : Super1() {
}

Kotlin: Class 'Sub1' is not abstract and does not implement abstract base class member public abstract fun method2(): Unit defined in Super1




댓글

이 블로그의 인기 게시물

Intel® HAXM installation failed 해결하기

Kotlin Interface

Kotlin this, super