Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

UpDown Dev Story

자바(Java) 인터페이스(Interface) 와 추상클래스(abstract class)에 대해 알아보자 본문

Java

자바(Java) 인터페이스(Interface) 와 추상클래스(abstract class)에 대해 알아보자

updown 2021. 7. 13. 04:08

인터페이스와 추상클래스에 대해 알아보기전 일반적인 개발 절차에 대해 알아보자

  • 분석
  • 설계
  • 개발 및 테스트
  • 시스템 릴리즈

인터페이스와 abstract 클래스를 사용하는 이유

  • 설계 시 선언해 두면 개발할 때 기능을 구현하는 데에만 집중할 수 있다.
  • 개발자의 역량에 따른 메소드의 이름과 매개 변수 선언의 격차를 줄일 수 있다.
  • 공통적인 인터페이스와 abstract 클래스를 선언해 놓으면, 선언과 구현을 구분할 수 있다.

추상클래스란?

  • 추상 클래스(abstract class)란 하나 이상의 추상 메소드(abstract method)를 포함하는 클래스이다. 추상 메소드는 선언만 있고 본체는 없는 함수이며 선언부에 ‘abstract’ 라는 키워드를 붙인다. 추상 메소드가 포함되었다면 클래스도 추상 클래스이므로 클래스명 앞에도 ‘abstract’키워드를 붙여야 한다.

  • 사용예시

필자의 IDE

  • 위의 예에서 처럼 추상 클래스는 다른 클래스들에게서 공통으로 가져야하는 메소드들의 원형을 정의하고 그것을 상속받아서 구현토록 하는데 사용된다. 메소드 오버라이드(override)와 유사해서 혼동하기 쉬우나 오버라이드는 안해도 상관없지만 추상 메소드는 자식 클래스에게 그 구현을 강요하는 기능을 한다. 위 예에서도 Dog 클래스는 move()메소드를 오버라이드 했지만 Cat클래스는 그러지 않았다. 하지만 howl()메소드는 반드시 구현해야 한다. 그리고 만약 어떤 추상클래스를 상속 받은 자식 클래스에서 추상 메소드를 구현하지 않았다면 자식 클래스도 추상 클래스가 되어야 한다는 점도 알아 두자.

인터페이스란?

  • 일종의 추상 클래스이다. 추상클래스처럼 추상메서드를 갖지만 추상클래스보다 추상화 정도가 높아서 추상 클래스와 달리 일반 메서드 또는 멤버변수를 가질 수 없다. 오직 추상메서드와 상수만 멤버로 가질 수 있다. 하지만 자바 8 부터 default 키워드를 통해 일반 메서드 구현이 가능해졌다.
  • 사용예시
  • 추상클래스와 다르게 인터페이스는 이를 구체화하기 위해 implements 라는 키워드를 사용하고 그 뒤에 구현할 인터페이스 명을 써야한다. InterfaceTest를 구체화하기 위해서는 반드시 추상 메소드인 howl()의 본체를 위와 같이 정의하여야 한다. 그리고 howl()의 접근 지정자는 반드시 public이어야 한다. 그 이유는 인터페이스에서 (생략되었다 할 지라도) public abstract 으로 정의되었기 때문이다.

인터페이스와 추상클래스의 차이

 

 

 

 

 

 

 

Comments