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
댓글
댓글 쓰기