본문 바로가기

프로그래밍 언어/Java

추상 클래스

우리가 기존에 사용하던 클래스의 구조는 다음과 같다.

class A {
    private val a = 0
    
    public fun method(){...}
}

 

당연히 A 클래스에 대한 객체를 생성할 수 있고, 객체에 대한 메서드 또한 문제 없이 사용할 수 있다.

 

추상 클래스는?

반면 추상 클래스의 구조는 다음과 같다.

  • 필드
  • 일반 메서드
  • 추상 메서드
abstract class A {
    // 필드
    lateinit var name: String
    val age = 20 
    fun normalMethod(){...} // 일반 메서드
    abstract fun method() // 추상 메서드
    abstract fun method2(){...} // 오류 발생
}

 

A를 추상 클래스, method 함수를 추상 메서드라고 한다.

 

추상 메서드는 메서드는 선언되어 있지만 기능에 대한 코드는 작성되지 않은 특징을 갖고 있다.

 

추상 메서드를 갖는 클래스는 무조건 추상 클래스로 선언되어야 하며, 추상 클래스에 대해서는 객체를 선언할 수 없다.

이와 같은 특징으로 추상 클래스는 상속을 위한 슈퍼 클래스로 사용하기 위해 생성한다.

 

abstract class A {
    lateinit var name: String
    abstract fun method()
}

class B: A(){
    init{
        this.name = "Json"
    }
    override fun method(){...}
}

class main(){
    val B = B()
    B.method()
    
    val A = A() // 불가능
}

 

'프로그래밍 언어 > Java' 카테고리의 다른 글

[JAVA] 인터페이스 기본 개념  (1) 2024.01.24