모두 Abstract method로 이루어져있다. 인터페이스에 선언한 변수는 모두 상수가 되고, 메서드는 전부 추상 메서드가 된다.
public interface Calc{
int a = 3; // public static final int a = 3;
int add(int num1,int num2) // abstract int add()
}
이 때, int add(int num1,int num2) 을 보면 num1 , num2 를 받아서 두 수를 add 하고 int형으로 돌려줄 것이라는 것을 유추할 수 있다.
Interface Vs Abstract class
결론부터 말하자면 인터페이스는 설계도로서의 계약서, 규약('명세(specification' 라고 흔히 말한다)이라고 생각하면 되고, 추상 클래스는 확장을 위한 기본 설계품이라고 생각하면 된다.
추상클래스는 책에서 말하는 is-a 관계가 핵심이다.
쉽게 말하면 만들어야할 여러 클래스들의 공통점을 찾아 추상화시켜서 사용하는 것이 개발에서 이득일 때!
예를들면 냉장고, TV, 커피머신, 전자렌지등의 클래스를 만들어야할 일이 있을 때 가전제품이라는 추상클래스로 추상화 시켜서 사용하면 좋을 때 사용한다. 가전제품의 기본적인 속성엔 제품을 킨다, 끈다 부터 시작해서 공통적인 속성이 많다. 이럴 때 확장의 개념으로 사용한다.
그런데 이 때 자바특성상 다중상속이 불가한 점을 고려해서 사용해야한다.
인터페이스는 구현하는 모든 클래스에 대해 특정한 메서드가 반드시 존재하도록 강제하는 역할이다.
즉 구현 객체가 같은 동작을 한다는 것을 보장하기 위한 목적이다.
인터페이스는 추상 클래스와는 달리 다중 상속이 가능하다.
출처:
https://jeong-pro.tistory.com/82
[기본기를 쌓는 정아마추어 코딩블로그]
'정리하기 이전 자료 ( before 20-11 ) > Java' 카테고리의 다른 글
인터페이스의 요소들 (0) | 2020.04.13 |
---|---|
Naming Conventions (0) | 2020.04.06 |
추상클래스 & 템플릿 메서드 (0) | 2020.03.30 |
DownCasting & instance of (0) | 2020.03.29 |
상속에서의 생성자 (0) | 2020.03.29 |
댓글