유용한 팁

[JAVA]추상 클래스(abstract class)와 인터페이스(interface)

프리월드 2012. 9. 5. 13:07

추상 클래스(abstract class)와 인터페이스(interface)


추상클래스 : http://exynoa.tistory.com/121

인터페이스 : http://exynoa.tistory.com/122



추상 클래스란?


1)매서드의 몸체없는 즉 {}가 없는 매서드를 하나라도 보유하면 내용이 구체적이지 않고 추상적이라 해서 추상 클래스라 부른다.

2)추상 클래스는 완전하지 않은 상태이므로 new연산자로 메모리에 올릴 수 없다. (new는 완벽하게 구현된 클래스들을 대상으로만 할 수 있다.)

3)추상 클래스를 상속받을 경우 부모클래스가 만들다 못한 추상 클래스는 자식에게 구현 의무가 주어진다.


인터페이스란? (외부를 서로 이어주는 다리 역할)


1)인터페이스는 클래스가 아닌 매서드만을 보유한 기능 집합

2)인터페이스를 이용하면, 현실의 다중적인 사물의 기능을 확장

3)클래스가 아니므로, 자바의 다중 상속 제한을 해결



사용 목적 : 


1.공통적인 부분의 특성을 부여해 주는것(서로간의 규약만 정해두어 따로 나눠서 작성 부분 컴파일 가능)

2.1번의 목적으로 구체적인 구현이 설계나 기획단계의 작업을 명시할 때 사용


공통점 : 


1) 자체가 Instance화 될수가 없다. (Body가 없기 때문)

[ex : TestInterface t = new TestInterface(), TestAbstract a = new TestAbstract(); //Error]


2) 선언부만 있고 Body가 없는 메소드를 멤버함수로 가짐


차이점 : 


1) 추상 클래스는 일반 메소드와 추상 메소드를 둘다 가질 수 있는 반면에, 인터페이스는 오로지 추상 메소드와 상수만을 가진다. 즉 로직을 작성 할 수 없다.


2) 인터페이스 내에 존재하는 메소드는 무조건 public abstract로 선언됨.


3) 인퍼에시스 내에 존재하는 변수는 무조건 public static final로 선언됨.


4) 자바는 일반적으로 다중상속이 불가능 - 인터페이스는 다중 상속과 비슷한 기능을 제공(다중 구현에 가까움)



추가로


상수가 될 수 있는 조건


1)상수는 프로그램의 시작부터 끝까지 값이 변해서는 안된다.(final)

2)상수는 모든 인스턴스간에 공유될 수 있어야 한다.(static)

(final static) int x = 3;

'유용한 팁' 카테고리의 다른 글

[A* 알고리즘을 사용한 길찾기]  (0) 2012.09.05
[JAVA] 내부 클래스(inner class)  (0) 2012.09.05
Doxygen 기본 설정법  (0) 2012.08.30
팔기 위한 인디게임  (0) 2012.08.21
[데이터베이스 핵심용어]  (0) 2010.10.27