ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 인터페이스 (interface)
    JAVA 2021. 7. 11. 22:57

    인터페이스란?

    일종의 추상클래스.

    추상클래스 처럼 추상메서드를 갖지만 추상화 정도가 더 높고, 추상클래스와 달리 몸통을 갖춘 일반 메서드 또는 멤버변수를 구성원으로 

    가질 수 없다.

    오직 추상메서드와 상수만을 멤버로 가질 수 있으며, 그 외의 다른 어떠한 요소도 허용하지 않는다.

     

    인터페이스의 작성

     

    interface 인터페이스이름{
    	
        public static final 타입 상수이름 = 값;
        public abstract 메서드이름(매개변수목록);
    }

    ※인터페이스 멤버들의 제약사항

    -모든 멤버변수는 public static final 이어야하며, 이를 생략할 수 있다.

    -모든 메서드는 public abstract 이어야하며, 이를 생략 할 수 있다.(static메서드와 디폴트 메서드는 예외 : jdk1.8부터)

     

    인터페이스의 상속

    클래스와는 달리 다중상속이 가능하다.

    interface Movable{
    
    	void move(int x, int y);
    }
    
    interface Attackable {
    
    	void attack(Unit u);
    }
    
    interface Fightable extends Movable, Attackable {}

     

    인터페이스의 구현

     

    인터페이스도 추상클래스처럼 그 자체로는 인스턴스를 생성할 수 없으며, 추상클래스가 상속을 통해 추상메서드를 완성하는 것처럼,

    인터페이스도 자신에 정의된 추상메서드의 몸통을 만들어주는 클래스를 작성하여야 하는데,

    키워드는 'implements'를 사용한다.

     

    class 클래스이름 implements 인터페이스이름 {
    
    	//인터페이스에 정의된 추상메서드를 구현해야 한다.	
    }
    
    class Fighter implements Fightable {
    
    	
        public void move(int x, int y) {/*내용생략*/}
        public void attack(Unit u) {/*내용생략*/}
    }

     

    그러나 만약 구현하는 인터페이스 메서드 중 일부만 구현한다면,

    abstract를 붙여서 추상클래스로 선언해야한다.

    abstract class Fighter implements Fightable {
    	
        public void move(int x, int y) {/*내용 생략*/}
    }

     

    그리고 동시에 상속과 구현을 할 수도 있다.

    class Fighter extends Unit implements Fightable {
    
    	public void move(int x, int y) {/*내용 생략*/}
        public void attack(Unit u) {/*내용 생략*/}
    }

     

    728x90
    반응형

    'JAVA' 카테고리의 다른 글

    [JAVA] ArrayList  (0) 2021.08.19
    [JAVA] println, print 차이  (0) 2021.08.08
    추상클래스(abstract class)  (0) 2021.07.03
    메소드(함수) 호출 방식 Call by Value & Call by Reference  (0) 2021.06.18
    [JAVA]Map.Entry 인터페이스  (0) 2021.06.08

    댓글

Designed by Tistory.