인터페이스의 정의와 특징

인터페이스는 내부의 모든 필드가 public static final로 정의되고,

static과 default메서드 이외의 모든 메서드는 public abstract로 정의된 객체지향 프로그래밍 요소다.

class키워드 대신 interface 키워드를 사용해 선언한다.

 

인터페이스 내에서는 명시하지 않고 생략하여도

public static final과 public abstract가 자동으로 추가된다.

 

인터페이스의 상속

인터페이스의 상속은 extends가 아닌 implements를 사용한다.

인터페이스의 가장 큰 특징은 다중 상속이 가능하다.

쉼표로 구분해 나열한다.

 

클래스명 implements 인터페이스명, ...., 인터페이스명{

 

}

 

*인터페이스는 모든 필드가 public static final로 정의돼 있어 충돌이 발생하지 않기 때문에, 다중 상속이 가능하다.

 

클래스가 인터페이스를 상속할 때, 인터페이스 안에는 미완성 메서드가 있다.

이 상황에서 클래스는 에러가 나는데, 클래스는 일반 클래스로 정의되어 있으므로, 내부에는 완성된 메서드만 포함되어야 하는데, 인터페이스를 상속하면서 미완성 메서드가 들어가면 오류가 뜨게 된다.

'Do it! 자바 완전 정복 408p 참조'

 

인터페이스 타입의 객체 생성 방법

인터페이스 타입의 객체 생성 방법에는 두가지가 있다.

먼저 인터페이스를 일반 클래스로 상속해 객체를 생성하는 방법이 있고,

익명 이너 클래스를 활용해 인터페이스 객체를 생성하는 방법이 있다.

 

1. 인터페이스를 일반 클래스로 상속해 객체 생성

interface A_interface{
    int a = 3;
    void abc();
}

class B_class implements A_interface{
    public void abc(){

    }
}
public class CreateObjectOfInterface_1 {
    public static void main(String[] args) {
        A_interface a1 = new B_class();
    }
}

 

2. 익명 이너 클래스

interface A_interface_2{
    int a = 3;
    void abc();
}
public class CreateObjectOfInterface_2 {
    public static void main(String[] args) {

        A_interface_2 a1 = new A_interface_2() {
            @Override
            public void abc() {

            }
        };
    }
}

 

+ Recent posts