인터페이스는 얼핏 보기에는 추상 클래스와 매우 흡사한 개념으로 느껴질 수 있습니다.
인터페이스는 숙련된 자바 개발자들에게 아주 선호되는 설계 기능이면서
자바에서 다중 상속을 구현하게 해주는 고급 기술이기도 합니다.
추상클래스는 추상 메소드 외에 멤버변수나 일반 메소드를 가질 수 있지만
인터페이스는 반드시 사전에 정의된 추상 메소드와 상수만을 가질 수 있다는 특징이 있습니다.
인터페이스는 팀 프로젝트의 동시 작업에 유리하고 일반적으로 추상보다 요구되는 설계의 기준이 높아서
더 체계적이라는 평을 받습니다.
예제를 봅시다
Dog라는 클래스를 생성하여 class를 지우고 interface를 입력합니다
추상 클래스와 다르게 class라는 이름 자체를 지우고 인터페이스라고 정의해버리는데
4행처럼 추상 함수를 선언했을때는 아무런 오류가 나지 않지만
5행처럼 추상함수의 내용을 쓰려고하면 오류가 발생합니다
즉, 인터페이스는 완전히 설계만 해라 라고 만들어진 기능입니다
만약 abstract class Dog라고 다시쓰면
오류가 발생하지 않습니다.
이렇게 추상은 일반 멤버 변수나 일반 메소드를 가질 수 있지만
인터페이스는 추상 메소드와 상수만을 가질 수 있습니다.
이제 이 인터페이스를 Main 클래스에서 사용해봅시다.
인터페이스는 다른 클래스 상속들과 다르게 implements라는 키워드를 사용합니다
마찬가지로 함수들을 가져오기 위해 오류 표시 클릭 -> Add unimplemented methods를 누르면
이렇게 나오고
이렇게 실행이됩니다.
추가로 추상 클래스 같은 경우는 public 메소드를 구현하려고하면
반드시 몸체(내용)을 구현하라고 합니다.
마지막으로 인터페이스의 특징인 다중상속에 대해 알아봅시다
이렇게 추상 클래스를 포함한 모든 클래스는 다중 상속이 안되는데
인터페이스는 이렇게 다중상속이 가능합니다.
객체(Object) 클래스 (0) | 2020.10.06 |
---|---|
다형성, 과일정보 프로젝트 구현 (0) | 2020.10.06 |
최종(Final)의 쓰임 (0) | 2020.10.06 |
추상을 이용하여 음악 플레이어 프로그램, 동물 클래스 구현 (0) | 2020.10.06 |
추상(Abstract) (0) | 2020.10.06 |