가자미의 개발이야기
자바 인터페이스의 개념과 사용하는 이유 본문
인터페이스는 몸체 없는 메소드만 갖는 클래스와 비슷하게 생겼다.
인터페이스는 복잡한 클래스의 사용방법을 정리한 장치이다.
혹은 복잡한 클래스를 인터페이스에 선언된 추상 메소드의 기능만 사용하도록 정리하는 역할을 하기도 한다.
예를 들어 어르신분들은 전화나 문자를 써야할 때 스마트폰은 기능이 너무 많아 사용하기 불편할 수 있다.
이때 스마트폰을 전화 문자의 기능으로만 접근할 수 있게 한다면 어떨까?
여기서 그 역할을 인터페이스가 한다.
전화와 문자는 스마트폰의 메소드이자 인터페이스의 추상 메소드가 된다.
다시 쉽게 이해하자면, 인터페이스는 스마트폰 설명서같은 역할을 한다...
예시.
이렇게 프린터블 인터페이스를 선언했다. 이 안에는 추상 메소드로 print메소드가 있다.
interface Printable{
public void print(String doc);
}
인터페이스를 구현하는(implement) 클래스이다. 추상 메소드로 선언됐던 print의 기능이 자세히 적혀있다.
이때 print메소드는 상속의 경우처럼 오버라이딩 관계가 성립된다.(@Override 사용가능)
class Printer implements Printable{
@Override
public void print(String doc) {
System.out.println(doc);
}
}
인터페이스는 몸체가 없기 때문에 인스턴스를 만들 수 없다. 하지만 참조변수의 자료형으로는 선언될 수 있다.
이때 상속과 비슷하게 인터페이스 참조변수는 자신을 구현하는 클래스만 인스턴스로 만들 수 있다.
Printable prn = new Printer();
prn.print("hello");
상속과 구현은 비슷해보이지만 차이가 있다
상속은 하나의 클래스만 해야하지만
구현은 여러 개의 인터페이스를 구현할 수 있다.
'Java > 자바 기본 문법' 카테고리의 다른 글
자바의 예외처리 try catch, throw (0) | 2021.01.11 |
---|---|
인터페이스에 쓰이는 문법과 추상 클래스 (0) | 2021.01.08 |
자바의 final 선언와 @Override (0) | 2021.01.07 |
자바 상속의 목적 (0) | 2021.01.07 |
자바 instance of 연산자 (0) | 2021.01.07 |