하위링크들

자바 추상클래스(abstract)

Quill 2015. 5. 22. 07:13



추상클래스(abstract)는 협업 프로젝트시의 소통을 위해 만들어진 개념이다. 

abstract class 클래스명 {  } 생성은 이렇게 할 수 있고 그 내용으로는 함수가 선언 될 수 있으나 그 함수의 구현 내용은 없다. 이 추상 클래스는 다른 클래스에서 확장(extend)을 통해 사용 할 수 있는데 반드시 추상 클래스가 선언한 모든 추상 깡통 함수들을 재정의 하도록 강요한다. 일반적인 상속은 상속 받은 클래스가 상위 클래스 중에서 바꾸고 싶은 함수만 재정의하여 사용하지만 추상 클래스를 상속 받으면 반드시 모든 깡통 함수를 재정의 해야한다. 특정 함수들의 오버라이드를 강제할 수 있다는 뜻이다. 

abstract class는 abstract 함수를 가지고 있는 클래스를 말한다. 추상 클래스의 모든 함수가 모두 강제 구현의 의무를 지닌 추상 함수를 포함하는 건 아니라는 뜻이다. 추상 클래스 안에서도 추상 함수가 아닌 함수는 필수적으로 구현하지 않아도 된다. 대신 추상 함수도 아니면서 구현을 하지 않으면 이클립스에서 경고 정도는 내보낼 것이다.


abstract class는 바로 객체를 가지지 못하나?

가능하다. 대신에 추상 함수를 구현해야 함으로 바로는 못한다. 따라서 객체를 생성함과 동시에 추상 함수 구현을 위한 익명 클래스를 생성해야 한다. (이는 인터페이스도 마찬가지입니다.)


추상 클래스와 인터페이스가 비슷해보여. 비교 설명 좀.

그래서 비교 분석 해보는 표를 만들어 보았습니다.


 

 추상 클래스

 인터페이스

추상 메소드의 존재

 추상 메소드를 가지고 있어서 활용하기 전에 그것들을 구현하도록 강제합니다.

 객체의 생성

익명 클래스를 통해서만 직접적인 객체 생성이 가능합니다. 

 사용법

 클래스에서 확장하여 사용

 클래스가 구현하여 사용

존재 가능한 필드

 추상 메소드를 한개 이상 가지고 있다 뿐이지 다른 필드 사항들은 일반 클래스랑 같습니다.

 오직 상수와 추상 메소드만 존재 할 수 있습니다.

 다중 사용

 다중 상속은 원래 안됩니다.

 다중 구현은 됩니다.











반응형