인터페이스 선언

2022. 4. 14. 20:03java/java

*인터페이스 이름

-자바 식별자 작성 규칙에 따라 작성

   1)첫자는 대문자로 시작하는 것이 관례

   2)숫자로 시작하면 안되고, $와 _를 제외한 특수 문자는 안됨

   3)다른 언어가 결합되면 첫 알파벳은 대문자로 하는 것이 관례

 

*인터페이스 선언

  [public interface 인터페이스명 {

        //상수

       -타입 상수명 = 값;                                //초기값을 주지 않으면 컴파일 에러남

        //추상메소드

       -타입 메소드명();

        //디폴트 메소드 // 자바 8부터 추가됨       

        -default 타입 메소드명() { }                    //실행하려고 하면 인터페이스 구현 객체 필요

        //정적메소드     // 자바 8부터 추가됨

        -static 타입 메소드명()  { }

  }

 

 1) 상수 필드 선언

     -인터페이스는 상수 필드만 선언이 가능하다.

          //데이터를 저장하지 않기 때문에 데이터를 저장할 인스턴스 또는 정적 필드가 필요 없다.

     -인터페이스 선언된 필드는 모두 public static final의 특징을 갖는다.

          //필드 선언 시에 public, static, final을 생략하더라도 자동적으로 컴파일 과정에서 붙게 된다.

     -상수명은 대문자로 작성한다.

          //서로 다른 단어로 구성되어 있을 경우에는 _로 연결하는 것이 관례

     -선언과 동시에 초기값을 지정해야 한다.

          //static{ } 블록을 작성할 수 없으므로 static { } 으로 초기화할 수 없다.

public interface RemoteControl {
    public int MAX_VOLUME = 10;
    public int MIN_VOLUME = 0;
}

 

2)추상 메소드 선언

   -인터페이스를 통해 호출된 메소드는 최종적으로 객체에서 실행된다.

   -인터페이스의 메소드는 기본적으로 실행 블록이 없는 추상 메소드로 선언한다.

 

 

public interface RemoteControl {
    public void turnOn();
    public void turnOff();
    public void setVolume(int volume);
    }

3)디폴트 메소드 선언

  -자바8 에서 추가된 언터페이스의 새로운 멤버이다.

      public default 리턴타입 메소드명(매개변수,...) { }

  -실행 블록을 가지고 있는 메소드이다.

  -default 키워드를 반드시 붙여야 한다.

  -기본적으로 public 접근 제한을 가지므로 생략하더라도 컴파일 과정에서 붙는다.

 

public interface RemoteControl {
	default void setMute(boolean mute) {
    	if(mute) {
        	System.out.println("무음 처리합니다.");
        } else {
        	System.out.println("무음 해제합니다.");
        }
    }
}

 

4)정적 메소드 선언

   -자바8에서 추가된 인터페이스의 새로운 멤버이다.

       public static 리턴타입 메소드명(매개변수,...) {...}

 

public interface RemoteControl {
	static void channgeBattery() {
    	System.out.println("건전지를 교환합니다.");
    }
}

'java > java' 카테고리의 다른 글

인터페이스 구현(2)  (0) 2022.04.15
인터페이스 구현(1)  (0) 2022.04.15
인터페이스의 역할  (0) 2022.04.14
Set-HashSet (보완 필요)  (0) 2022.03.26
Generic (보완 필요)  (0) 2022.03.26