-
인터페이스 vs 추상클래스Java/Basics 2019. 6. 20. 10:06
■인터페이스
- 비슷한 기능을 가진 클래스들의 공통점(정확하게는 공통된 메소드)을
추출해서 모아놓은 집합체 또는 규칙 또는 약속 또는 표준 (딱 정의내리기가 애매하다)
- 일반 클래스와 비슷한 문법으로 작성한다. 하지만 class A -> interface A 로 쓴다.
그리고 static 변수를 제외한 다른 멤버 변수는 선언할 수 없고 메소드만 등록할 수 있다.
- 인터페이스에서 선언 가능한 메소드는 추상 메소드, default 메소드 2가지이다.
- 추상메소드는 선언만 해놓고 내부는 구현하지 않는다. 인터페이스를 구현한
클래스에 그 구현을 강제시킨다.
- default 메소드는 선언과 내부구현 모두 가능하다. (java 1.8에서 추가)
생성하려는 메소드의 특징을 잘 파악해서, 추상메소드로 만들지 default 메소드로
만들 지 판단하면 된다.
- 인터페이스를 구현한 클래스는 인터페이스에 선언된 추상 메소드들을 모두
구현해야만 한다. 이 약속은 인터페이스를 사용하는 코드안에서 중복되거나 불필요한
로직들을 상당수 없앨 수 있게 한다.- 또한 이 다형성을 활용해, 인터페이스를 구현한 객체를 주입받아 사용할 수도 있으므로
코드 수정이 필요없는 프로그램을 만들 수도 있다.
■인터페이스 vs 추상클래스
- 인터페이스에서 default 메소드를 사용할 수 있게 됨으로써 추상클래스가 점점 설자리를
잃어가는 중이다.
- 추상클래스를 통해 다중 상속을 구현할 수 없기 때문에 추상클래스는 사용하기 꺼려지는
존재가 되어버리는 것 같기도 하다.
- 하지만 일반적인 멤버변수를 선언할 수 있다는 특징은 아직 추상클래스에만 있다.
그래서 추상클래스는 아직 쓸모가 있다.
'Java > Basics' 카테고리의 다른 글
java 개발 환경 플랫폼 (0) 2020.01.25 vm args vs prog args (0) 2020.01.10 직렬화 vs 역직렬화 (0) 2019.06.14 Java의 날짜와 시간 API (0) 2019.06.06 자바 빌드 툴 (0) 2019.05.21 댓글