인터페이스 정의, 상속, 구현, 다형성, 장점, 디폴트 메서드

dewdew·2022년 5월 24일
0

JAVA

목록 보기
1/3

출처 : 유튜브 [ 자바의 정석-기초편 ] 을 보고 정리 작성한 자료입니다.
👉 클릭! 유튜브 링크


1. interface 정의

  • 핵심!! 추상 메서드의 집합
  • 구현된 것이 전혀 없는 설계도. 껍데기
  • 멤버는 public abstract 일부 혹은 전부 생략 가능.
  • 상수는 final 도 생략 가능
  • 인터페이스의 조상은 인터페이스만 가능 (Object가 최고 조상X)
  • 다중 상속 가능 (추상 메서드는 충돌해도 문제 없음)

2. interface vs 추상 클래스

인터페이스는 인스턴스 변수를 가질 수 없으나 추상 클래스는 가질 수 있다는 것이 가장 큰 차이점이다.

  • 추상 클래스일반 클래스 + 일부 추상 메서드의 조합이라면,
  • 인터페이스추상 메서드들의 집합.

3. interface 의 구현

인터페이스에 정의된 추상 메서드를 완성하는 것

  • 모두 구현하기
class 클래스이름 implements 인터페이스이름 {
	// 인터페이스에 정의된 추상 메서드를 모두 구현해야 한다.
}
  • 부분 구현하기
abstract class 클래스이름 implements 인터페이스이름 {
	// 부분적으로 구현할 경우, class 에 abstract 를 붙여
    // 모두 구현이 되지 않았다는 것을 명시한다.
}

4. 다형성

  • 인터페이스도 구현 클래스의 부모 역할을 할 수 있다.
  • 인터페이스 타입 매개변수는 인터페이스 구현한 클래스의 객체만 가능
  • 인터페이스를 메서드의 리턴타입으로 지정할 수 있다.
class Fighter extends Unit implements Fightable{
	public void move () {};
    public void attack (Fightable f) {};
    // Fightable 인터페이스를 구현한 클래스의 인스턴스만 가능
	int a;
    int b;
}
Unit u = new Fighter();
Fightable f = new Figher();

f.move();
f.attack(new Figher());
f.a // XXXX Fightable 에 선언된 것만 가능. 리모컨 역할.

5. 장점

  1. 두 대상(객체)간의 '연결, 대화, 소통'을 돕는 '중간 역할'
  2. 선언(설계)와 구현을 분리 -> 껍데기와 알맹이.
  3. 개발 시간 단축 -> 알맹이가 만들어지기 전에도 껍데기로 작업 가능.
  4. 표준화가 가능 -> JDBC(인터페이스 집합)
  5. 서로 관계 없는 클래스들을 관계를 맺어줄 수 있다.

6. default & static 메소드

JDK 1.8부터 추가할 수 있게 됨

이유는? -> 인터페이스에 새로운 메서드(추상 메서드)를 추가하기 어려워서.
어려운 이유는? -> 그 인터페이스를 구현한 클래스들에서 추가한 메서드를 모두 구현해줘야 해서.

profile
새로운 것은 늘 짜릿해

0개의 댓글