Interface, Abstract
Interface
- 일종의 추상 클래스
- 오직 추상메서드와 상수만을 멤버로 갖는다.
- Implements 키워드를 사용해서 class에서 상속받아 사용한다.
- 상속의 관계가 없는 클래스간 서로 공통되는 로직을 구현하여 쓸 수 있도록한다.
- Extends는 하나의 클래스만 상속 가능하나 Interface는 다중 상속이 가능하다.
- 스프링에서 객체와 객체의 관계를 약화시키기 위해 사용한다. - DI(Dependency Injection)
- 객체와 객체를 직접 연결시키는 것 보다는 인터페이스를 이용해 간접 연결 시키는 것이 나중에 객체를 수정하기에 편리하다.
Abstract
- 추상메서드를 하나 이상 가진 클래스
- 자신의 생성자로 객체 생성 불가능
- 하위 클래스를 참조하여 상위 클래스의 객체를 생성한다.
- 하위 클래스를 제어하기 위해 사용된다.
공통점
- new 연산자로 인스턴스 생성 불가능.
- 프로토타입만 있는 메서드를 갖는다.
- 사용하기 위해서는 하위클래스에서 확장/구현 해야 한다.
차이점
- 사용하는 키워드가 다르다.
- Abstract는 일반 메서드를 사용할 수 있지만, Interface는 메서드 선언만 가능하다.
- Interface는 설계도만 만들어 놓은 것이라면, Abstract는 웬만큼 다 만들어 놓은 것이라고 보면 된다.
'공부 > JAVA' 카테고리의 다른 글
[자료구조] 선형구조 (0) | 2018.06.05 |
---|---|
정규표현식(정규식, 표현식) (0) | 2018.06.05 |
Overloading vs Overriding (0) | 2018.05.31 |
Java란? (0) | 2018.05.31 |
변수란? (0) | 2018.04.26 |
댓글