Android 프로그래밍 2

본문 바로가기

사이트 내 전체검색


2. 추상클래스 & 인터페이스

페이지 정보

작성자 관리자 댓글 0건 조회 2,869회 작성일 20-03-22 21:43

본문

추상클래스 (Abstract Class)

 

추상클래스는 아직 구현되지 않고 선언만 된 추상메서드를 가지고 있는 클래스이다. 

이 추상클래스는 메서드가 구현되지 않아서 이 클래스를 직접 객체로 만들 수는 없다! 

반드시!! 상속을 받는 자식클래스 (SubClass) 가 있어야한다. 

추상클래스는 상속을 통해 생성될 자식클래스에서 메서드 오버라이딩에 강제성을 부여하기 위해 사용된다.



실습.


파일명 : AbstractClass.kt 


open abstract class AbstractClass {

    //자식 클래스에서 그냥 사용할 수 있는 일반 메서드
    fun generalMethod () {
        println("일반 메서드")
    }

    //자식 클래스에서 오버라이딩 해야 사용할수 있는 추상 메서드
    open abstract  fun abstractMethod()
}


파일명 : SubClass .kt 

 

class  SubClass : AbstractClass() {
    override fun abstractMethod() {
        println("추상 메서드 구현")
    }
}


파일명 : Abstract_main.kt


fun main(args : Array<String>) {
    var tempClass : AbstractClass = SubClass()
    tempClass.generalMethod()
    tempClass.abstractMethod()
}


예제 소스 처럼 추상클래스에서는 바디가 구현된 일반 메서드도 구현이 가능하다. 

그리고 추상 메서드는 서브클래스에서 Overriding 해서 사용하면 된다.


결과.

일반 메서드
추상 메서드 구현

Process finished with exit code 0
 


인터페이스 (Interface)

 

인터페이스는 다소 추상적인 개념이다. 

보통 프로젝트를 개발할 때 설계를 한다. 

이때 여러 인터페이스를 구현하면 각 인터페이스 타입을 가진 객체를 생성할 수 있고 이를 통해 인터페이스에 정의된 메서드 호출이 가능하다.

 

인터페이스 역시 추상클래스처럼 추상메서드 뿐만 아니라 바디가 구현된 일반 메서드도 넣을 수 있다.
 

그리고 인터페이스를 사용하면 협업이 가능해진다. 이런 역할을 하는 메서드를 만들어줘 하면서 인터페이스를 제공해주면 개발자는 어떤 방식이든 구현 (Override) 해 주기만 하면된다. 



실습.


fun main (args :Array<String>) {
    // 정의한 인터페이스 (InterfaceExample) 타입의 객체 생성
    // 인터페이스는 직접 생성이 불가능하다. 해당 인터페이스를 구현한 클래스로 생성
    var tempClass : InterfaceExample = GeneralClass()
    useInterfaceExample(tempClass)
}

interface InterfaceExample {
    fun generalMethod() {
        println("InterfaceExample 에서 구현된 일반 메서드 입니다")
    }
    fun abstractMethod()
}

class GeneralClass : InterfaceExample {
    override fun abstractMethod() {
        println("GeneralClass 에서 구현된 추상 메서드 입니다")
    }
}

fun useInterfaceExample(ife : InterfaceExample) {
    ife.generalMethod()
    ife.abstractMethod()
}
 

Abstract 메서드와 굉장히 비슷하다고 생각할 수 있다. 

 

결과.


InterfaceExample 에서 구현된 일반 메서드 입니다
GeneralClass 에서 구현된 추상 메서드 입니다

Process finished with exit code 0
 


추상클래스는 abstract 메서드가 하나 이상있는 클래스이다. 추상클래스의 경우 상속받는 자식클래스는 반드시 추상클래스의 추상메서드를 구현해야한다고 했다. 그러니깐 추상클래스는 필수적으로 구현해야할 메서드가 딱 있을때 쓰면 된다.
 
인터페이스는 구현하기전에 메서드에 대해 명세서를 작성해 놓은 느낌이다. 인터페이스를 상속받는 클래스에서는 반드시 인터페이스에 있는 추상메서드를 다 구현해야한다.
그리고 추상클래스는 단일 상속만 가능한데 인터페이스는 여러개의 인터페이스를 구현할수 있다. 즉 다중 상속이 가능하다. 

댓글목록

등록된 댓글이 없습니다.



개인정보취급방침 서비스이용약관
Copyright © www.leelab.co.kr All rights reserved.
상단으로
TEL. 063-469-4551 FAX. 063-469-4560
전북 군산시 대학로 558
군산대학교 컴퓨터정보공학과
PC 버전으로 보기