ch09. 인터페이스

09Roalwlzm01·2022년 10월 15일

Java

목록 보기
7/15

9.1 인터페이스의 개념

  • 일종의 추상 클래스, 미완성 설계도
  • 실제 구현된 것이 전혀 없는 기본 설계도
  • 추상 메소드와 상수만을 멤버로 갖는다
  • 인스턴스 생성 불가, 클래스 작성에 도움을 줄 목적으로 사용
  • 표준을 제시해주는 역할

9.2 인터페이스 작성

interface 인터페이스_이름{
	public static final 타입 상수 이름 =;
    public abstract 메서드이름(매개변수);
}
interface PlayingCard{
	public static final int SPADE = 4;
    int DIAMOND = 3;
    int HEART = 2;
    int CLOVER = 1;
    public abstract String getCardNumber();
    String getCardKind();
}
  • 모든 멤버 변수는 public static final 이어야 하며, 생략 가능
  • 모든 메서드는 public abstract 이어야 하며, 생략 가능

9.3 인터페이스의 상속

  • 인터페이스도 상속 가능 (다중 상속 허용)
interface Movable{
	void move(int x, int y)
}
interface Attackable{
	void attack(Unit u)
}
interface Fightable extends Movable, Attackable { }
  • Object 클래스와 같은 최고 조상이 없음

9.4 인터페이스의 구현

  • 인터페이스를 구현하는 것은 클래스와 상속 받는 것과 같음 (extend => implements)
  • 인터페이스에 정의된 추상메서드를 완성

9.5 인터페이스의 장점

  • 개발시간 단축
    - 메서드 호출하는 쪽에서는 선언부만 알면 끝
    - 동시 개발 가능
  • 표준화 가능
  • 서로 관계없는 클래스들 관계 맺기
  • 독립적인 프로그래밍이 가능

9.6 인터페이스의 이해

  • 두 객체 간의 연결, 대화, 소통을 돕는 중간 역할
  • 선언과 구현을 분리시키기
Class B{
	public void method(){
    	System.out.println("주말인데 여기서 뭐하냐 나 ㅋㅋ");
    }
}
-------------------------------------------------------------------------------
interface I {
	public void method();
}
class B implenets I {
	public void method(){
    	System.out.println("주말인데 여기서 뭐하냐 나 ㅋㅋ");
    }
}
  • 메소드를 사용하는 쪽에서 사용하려는 메서드의 선언부만 알면 됨
  • 직접적인 관계의 두 클래스 (A-B) <=> 간접적인 관계의 두 클래스 (A-I-B) (더 잘 짜여진 코드)
    <직접적인 관계의 두 클래스>

    <간접적인 관계의 두 클래스>

문제

블랙잭



0개의 댓글