자바

JAVA 자바 인터페이스의 역할과 선언,상수 필드 선언

알통몬_ 2017. 3. 13. 10:10
반응형


안녕하세요 알통몬입니다.

공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!

포스팅 내용이 찾아주신 분들께 도움이 되길 바라며

더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^

 

인터페이스의 역할

인터페이스 : 객체의 사용 방법을 정의한 타입 

객체의 교환성을 높여주기 때문에 다형성을 구현하는데 매우 중요한 역할.

개발 코드와 객체가 서로 통신하는 접점 역할.


 개발 코드가 인터페이스의 메서드를 호출하면 인터페이스는 객체의 메서드를 호출시킵니다. 

때문에 개발 코드는 객체의 내부 구조를 알 필요가 없고 인터페이스의 메서드만 알면 됩니다.



중간에 인터페이스를 두는 이유는 개발 코드를 수정하지 않고, 

사용하는 객체를 변경할 수 있도록 하기 위해서 입니다.

인터페이스는 하나의 객체가 아니라 여러 객체들과 사용이 가능하기 때문에 어떤 객체를 사용하느냐에 따라 실행 내용과 리턴값이 다를 수 있습니다. 개발 코드 측면에서는 코드 변경 없이 실행 내용과 리턴 값을 다양화할 수 있다는 장점을 가지게 되는 것입니다.



선언

 물리적인 형태는 클래스와 동일하지만, 선언하는 방법에서 차이가 있습니다.

 [public] interface 인터페이스명 { ... }

클래스와 마찬가지로 인터페이스명은 첫 글자는 대문자로 나머지는 소문자로 하는 것이 관례이고 

두 단어 이상으로 이루어져있으면 낙타식 표기법을 사용하면 됩니다.

ex) public interface Naver { ... }

    public interface NaverBlog { ... }


인터페이스는 상수와 메서드만 구성 멤버로 가집니다. 객체로 생성할 수 없기 때문에 생성자는 가질 수 없습니다.

자바7이전까지 인터페이스의 메서드는 실행 블록이 없는 추상 메서드로만 선언이 가능했는데 

자바 8 부터 디폴트 메서드와 정적 메서드도 선언이 가능합니다.


상수 필드 ( Constant Field )

 인터페이스는 객체 사용 설명서이기 때문에 런타임 시 데이터를 저장할 수 있는 필드를 

선언할 수 없지만 상수 필드는 선언이 가능합니다. 

상수는 인터페이스에 고정된 값으로 런타임 시에 데이터를 바꿀 수 없습니다.

상수를 선언할 때 반드시 초기값을 대입해야 합니다.

추상 메서드 ( Abstract Method )

 객체가 가지고 있는 메서드를 설명한 것으로 호출할 때  어떤 매개값이 필요하고, 

리턴 타입이 무엇인지 알려줍니다. 실제 실행부는 객체(구현 객체)가 가지고 있습니다.

디폴트 메서드 ( Default Method )

 인터페이스에 선언되지만 사실은 객체(구현 객체)가 가지고 있는 인스턴스 메서드라고 생각해야 합니다. 자바 8에서 디폴트 메서드를 허용한 이유 : 기존 인터페이스를 확장해서 새로운 기능을 추가하기 위해서 입니다.

정적 메서드 ( Static Method )

 자바 8에서부터 작성할 수 있는데, 디폴트 메서드와는 달리 객체가 없어도 인터페이스만으로 호출이 가능합니다.


상수 필드 선언

 인터페이스는 데이터를 저장할 수 없기 때문에 상수 필드만 선언할 수 있습니다.

상수는 public static final 로 시작하는데 이미 클래스 포스팅에서 공부하였습니다. 

인터페이스에서 선언된 필드는 모두 public static final 특성을 갖습니다.

public static final 을 생략하더라도 자동적으로 컴파일 과정에서 붙게 됩니다.

상수명은 대문자로 작성하되 여러단어가 혼합될 경우 언더바(_) 로 연결하는 것이 관례입니다. 

ex)

 public interface Volume {

  public static final MAX_VOLUME = 10;

  MIN_VOLUME = 0;

}

반응형