인터페이스

coding by 스플릿·2022년 1월 2일
0

Java1

목록 보기
37/44

정의

  • 일종의 추상클래스지만 추상클래스보다 추상화 정도가 높아서 오직 추상메서드와 상수만 멤버로 가질 수 있다.

특징

  • 추상클래스가 미완성 설계도라면 인터페이스는 틀외에는 아무것도 없는 기본 설계도로 다른 클래스 작성에 도움을 줄 목적으로 작성된다.

  • 모든 멤버변수는 public static final이어야하고 메서드는 public abstract 메서드여야 하지만 생략가능하다.(컴파일러가 자동으로 추가해줌)
  • JDK1.8부터는 static메서드와 default메소드를 추가할 수 있다

상속

  • 인터페이스끼리 상속을 받거나 상속할 수 있으며 다중상속이 가능하다.
    (인터페이스는 object같은 최고 조상이 없다)

구현

  • 해당 인터페이스를 구현할 클래스에서 인터페이스의 메소드를 완성해주어야 한다
    (class (클래스명) implements (인터페이스명)

장점

  • 개발시간을 단축시킬 수 있다.
  • 표준화가 가능하다.
  • 관계없는 클래스들에게 관계를 맺어 줄 수 있음
  • 독립적인 프로그래밍이 가능
interface Movable{ void move(int x, int y);}
interface Attackable{ void attack(Unit u);};
interface Fightable extends Movable, Attackable{ }
//인터페이스끼리의 다중상속
class Unit{ 
    int hp=100, x=0, y=0; 
}
//클래스의 인터페이스 메소드 일부 구현 ( 추상 클래스 선언 필요 )
abstract  class Moving_Unit extends Unit implements Fightable{
    public void move(int x, int y){
        super.x = x; super.y = y;
    }
}
//클래스의 인터페이스 메소드 모두 구현
class Attacking_Unit extends Unit implements Fightable {
    public void move(int x, int y){
        super.x = x;
        super.y = y;
    }
    public void attack(Unit u){
        u.hp = 0;
    }
}

0개의 댓글