코틀린

코틀린 [Abstract class] 추상함수

아는맛이무섭다 2024. 3. 8. 19:26

 

안녕하세요, 개인과제 lv4에 Abstract class를 이용해서 코딩을 하라고 해서,

오늘 배운 것을 복습할 겸 이 글을 작성하게 되었습니다.

 

Abstract (추상적인)

 

Abstract class 는 그 자체로 서브클래스로 쓰일 수 밖에 없음과 동시에 인스턴스를 할 수 없는 클래스입니다. Abstract class 로는 함수를 작동시킬 수 없지만, 여러 클래스에서 공동으로 쓰이는 프로퍼티와 메소드를 요소를 묶을 수 있습니다.

 

중요한 사항 

Abstract 클래스로는 오브젝트를 만들 수 없다는것.

이름대로 추상적인 개념이기 때문에 실체가 없다는 것.

추상함수를 하위 클래스에서 재정의 하려면 open 키워드를 사용.

재정의를 할 필요가 없다면 open 키워드를 안 사용해도 됩니다.

 

아래 페이지에서 해석, 요약 정리하면 이런 내용입니다.

더 구체적인 내용이 필요하시면 아래 링크를 타고 들어가주세요.

 

 

Kotlin Abstract class - GeeksforGeeks

A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.

www.geeksforgeeks.org

 

제가 이해하기로는 추상함수는 약간 공통 분모 같아요. 여러개 함수들의 공통적인 부분들을 묶어놓아서, 정리요약본을 넣는 듯한 느낌입니다.

 

해보시면 아실거에요.

 

일단 우선 Abstract Class를 새로 만들어주세요.

이걸 하려면 클래스들이 많아야합니다. 클래스들은 되도록 한파일에 하나만 있는게 좋아요.

 

AbstractClass.kt 예시 사진

 

위에 package 뒤는 변형이 가능하고 import는 없어도 됩니다. 제가 BigDecimal을 사용해서 있는거라서요.

BigDecimal을 그대로 사용하셔도 좋지만, Int를 사용하셔도 좋습니다.

 

그렇게 된다면 코딩이 이렇게 나오겠네요.

 

package com.example.abstract

abstract class AbstractClass{
	abstract fun operate (num1 : Int, num 2: Int) : Int
}

 

이걸 만든후에 하위클래스에 적용을 하면 됩니다.

새로운 클래스를 생성하셔서 아래 코딩을 입력해주세요.

 

package com.example.abstract

import com.example.abstract.AbstractClass

class AddOperation : AbstractOperation() {
    override fun operate(num1: Int, num2: Int): Int {
        return num1 + num2
    }
}

 

 

차이점

 

 

Abstract Class 사용전

 

Abstract Class 사용후

 

제가 아직 막 Abstract를 본격적으로 사용한 건 아니고, 딱 기초만 사용해서 차이점은 크게 못느꼈습니다.

Abstract는 여러 클래스에서 사용하는 객체가 공통이 되면 사용하긴 편한 것 같아요.

결국에는 여러 클래스에 존재하는 동일 객체를 한꺼번에 묶어주니까, 타자를 칠게 줄어드는 느낌이 들어요.

 

아래는 다른 클래스인데 위에처럼 num1과 num2의 객체가 동일하기 때문에 abtract를 이용해서 했습니다.

조금 더 겹치는 범위가 커지면 활용하긴 편할 것 같아요.

로그인 할때 아이디나 패스워드 코딩짤때 이용될 것 같고요.

약간 데이터를 미리 지정한다음에 언제든지 사용할때 템플릿을 꺼내는 느낌이에요.

 

다른 세개의 클래스

 

 

 

 

하위 클래스들을 모아서 쓸때는 위에 private val 하시면 됩니다.

그리고 아래에 진행코드를 넣어주면 되고요.

 

 

 

사용하기 나름인것 같네요.

 

그러면 좋은 하루 되세요!