[문법과 개념]
인터페이스를 abstract, final과 함께 대표적인 규제이다.
인터페이스의 역할을 한마디로 정리하자면 어떤 클래스에서 특정한 인터페이스를 사용한다면 그 클래스가 반드시 해당 인터페이스에 포함된 메소드를 구현하도록 강제하는 것이다.
인터페이스에서 강제하는 메소드를 구현하지 않으면 프로그램은 컴파일조차 되지 않는다.
특정 클래스를 특정 인터페이스와 결합하면 그 클래스를 정의할 때 인터페이스에 정의된 메소드를 반드시 구현하도록 강제할 수 있다. 그리고 이렇게 구현되 잇을 때 A 클래스는 이터페이스를 구현한다라고 이야기 한다.
[인터페이스를 사용하는 이유]
인터페이스는 어떤 클래스가 어떤 멤버(메소드)를 가지고 잇는가에 대한 명세서와 같은 역할을 한다.
구현하는 클래스는 해당 명세서에 정의된 대로 클래스의 멤버를 구체적으로 구현해야만 컴파일된다.
이를통해 서로 다른 생각을 하고 있을 여지를 더 좁힐 수 있는 것이 바로 인터페이스이다.
[인터페이스의 규칙]
인터페이스는 어떤 대상이 되는 시스템을 제어할 때 사용하는 장치라고 할 수 있다.
인터페이스를 선언할 때 인터페이스에 정의되는 멤버의 접근 제어자는 반드시 public이어야한다. public이 앤 인터페이스의 메소드는 정의할 수가 없고 만약 정의한다면 에러가 발생한다.
인터페이스도 상속이 되고, 상속된 인터페이스는 마치 클래스처럼 부모 인터페이스가 가진 기능을 그대로 자식들이 갖게 된다는 점을 알 수 있다.
interface와 abstract는 서로 미접하면서 약간 다른 기느을 제공한다.
abstract 클래스는 일반적인 클래스와 다를 바가 없다.
다만 abstract이기 때문에 abstract 메소드를 하위 클래스가 상속해서 사용하도록 강제한다는 특징외에는 일반적인 클래스와 같다.
그렇기 때문에 추상클래스에는 구체적인 하위클래스에서 오버라이딩하길 기대하는 추상 메소드가 잇지만 동시에 구체적인 실제 로직을 가진 메소드나 필드도 포함할 수 잇다.
인터페이스는 구체적인 로직을 가진 메소드를 인터페이스에 포함할 수 없다. 인페이스느 반드시 본체가 없는 메소드만 가지고 있어야 한다는 특징이 있다.
'생활코딩 > JAVA' 카테고리의 다른 글
생활코딩 - JAVA (예외 (exception)) (0) | 2020.12.29 |
---|---|
생활코딩 - JAVA (다형성) (0) | 2020.12.29 |
생활코딩 - JAVA (final) (0) | 2020.12.19 |
생활코딩 - JAVA (Abstract) (0) | 2020.12.19 |
생활코딩 - JAVA (접근 제어자) (0) | 2020.12.19 |