'Interface'에 해당하는 글 1건

인터페이스란?

· 구현된 것은 아무 것도 없는 밑그림만 있는 기본 설계도.

· 일반 메서드 또는 멤버 변수를 가질 수 없고, 오직 추상 메서드상수만을 멤버로 가질 수 있다. → 추상 클래스보다 추상화가 더 높다.

· 인터페이스는 표준, 약속, 규칙 이다.

 

인터페이스 작성 방법

· class 대신 interface라는 키워드를 사용한다.

· class와 같이 접근 제어자로 public이나 default를 사용할 수 있다.

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

 

인터페이스 제약사항

· 모든 멤버 변수public static final 이어야 하며, 이를 생략 가능.

· 모든 메서드public abstract 이어야 하며, 이를 생략 가능.

 

인터페이스의 상속

· 인터페이스는 인터페이스로부터만 상속 받을 수 있다. (Object와 같은 최고 조상이 없다)

· 여러개의 인터페이스로부터 상속 가능. (다중 상속 가능)

interface Movable{
  void move(int x, int y);
}

interface Attackable {
  void attack(Unit u)l
}

interface Fightable extends Movable, Attackable {
}

 

인터페이스의 구현

· 그 자체로는 인스턴스를 생성할 수 없다.

· 구현한다는 의미의 implements를 사용해서 구현한다. (클래스는 확장한다는 의미에 extends를 사용)

· 만약 인터페이스의 메서드 중 일부만 구현한다면, 추상 클래스로 선언되어야 한다.

· 상속과 구현을 동시에 할 수 있다.

class 클래스이름 implements 인터페이스이름 {
  // 인터페이스에 정의된 추상 메서드를 구현
}

abstract class 클래스이름 implements 인터페이스이름 {
  // 인터페이스에 정의된 추상 메서드의 일부만 구현
}

class 클래스이름 extends 조상클래스이름 implements 인터페이스이름 {
}

 

 

인터페이스의 장점

· 개발 시간을 단축시킬 수 있음.

· 표준화가 가능.

· 서로 관계없는 클래스들에게 관계를 맺어 줄 수 있다. → 하나의 인터페이스를 공통적으로 구현하도록 함으로써 관계를 맺어 줄 수 있다.

· 독립적인 프로그래밍이 가능.  → 클래스와 클래스간의 직접적인 관계를 인터페이스를 이용해서 간접적인 관계로 변경하면, 한 클래스의 변경이 관련된 다른 클래스에 영향을 미치지 않도록 독립적인 프로그래밍이 가능.

 

▶ 직접적인 관계의 두 클래스 (A-B)

class A {
  public void methodA(B b) {
    b.methodB();
  }
}
class B {
  public void methodB() {
    System.out,println("methodB()");
  }
}
class InterfaceTest {
  public static void main(String[] args) {
    A a = new A();
    a.methodA(new B());
  }
}

 

▶ 간접적인 관계의 두 클래스 (A-I-B)

class A {
  public void methodA(I i) {
    i.methodB();
  }
}
Interface I {
  void methodB();
}
class B implements I {
  public void methodB() {
    System.out.println("methodB()");
  }
}
class C implements I {
  public void methodB() {
    System.out.println("methodB() in C");
  }
}

 

 

추상 클래스와 인터페이스 비교

· 공통점

  - 스스로 객체를 생성할 수 없다.

  - 상속 관계에서만 존재한다. (구현을 목적으로 한다)

· 차이점

  - 다중 상속을 지원한다. (인터페이스)

  - 모든 자원이 미완성이다. (인터페이스)

 

 

 


WRITTEN BY
김치치즈스마일
세계정복!

,