JAVA

인터페이스 ( interface )

오선지♬ 2022. 3. 2. 19:25
728x90
반응형

인터페이스란?

- 추상 메서드의 집합

- 구현된 것이 전혀 없는 설계도. 껍데기 ( 모든 멤버가 public )

 

 

 

추상클래스와 인터페이스의 공통점

추상메서드를 가지고 있다.

 

 

 

추상클래스와 인터페이스의 차이

 

추상클래스는 일반 클래스인데 추상메서드를 포함하고 있는 것이다.

그래서 생성자도 가지고 있고 멤버변수도 가지고 있다.

반면 인터페이스는 오로지 추상 메서드, 상수, static메서드, default메서드 만으로 이루어져 있다.

 

출처 : 자바의 정석

항상 public / static / abstract 이기 때문에 생략 가능하다. 

일부만 써도 되고 전부 생략해도 된다.

 

 

 

 

인터페이스의 상속

 - 인터페이스의 조상은 인터페이스만 가능 ( Object 가 최고 조상이 아니다 )

 - 다중 상속이 가능. ( 추상메서드는 충돌해도 문제 없음 ) - 클래스는 다중 상속이 안됨.

     : 메서드명이 같아도 어차피 구현된 부분이 없기 때문에 어떤것을 상속 받아도 상관이 없기 때문.

      클래스의 경우에는 다중 상속 받았는데 메서드 명이 겹칠경우 어떤 것을 상속받아 사용해야하는지 충돌이 일어날          수 있기 때문에 단일 상속만 가능하게 되어있다.

 

 

 

 

인터페이스의 구현

- 인터페이스에 정의된 추상 메서드를 상속을 통해완성하는 것.  : 인터페이스의 추상메서드 몸통 { } 만들기

출처 : 자바의 정석

클래스 상속은 extends 를 쓰는데

인터페이스 상속은 implements 를 쓴다. ( 뜻은 구현 )

 

 

 

인터페이스를 이용한 다형성

-인터페이스 타입 매개변수는 인터페이스 구현한 클래스의 객체만 가능.

ex ) 

 interface Fightable {

       void move ( int x, int y );

       void attack ( Fightable f );

                           ↳ Fightable 인터페이스를 구현한 클래스의 인스턴스만 가능

 }

 

 

- 인터페이스를 메서드의 리턴타입으로 지정할 수 있다.

ex ) 

 Fightable  method( ) {

    ↳ Fightable 인터페이스를 구현한 클래스의 인스턴스를 반환

 

     return new Fighter( );

 }

 

 

 

인터페이스의 장점

- 두 대상( 객체 )간의 '연결', '대화', '소통'을 돕는 '중간역할'을 한다.

- 선언( 설계 )과 구현을 분리시킬 수 있게 한다. → 변경에 유리하고 유연한 코드

 

출처 : 자바의 정석

- 인터페이스 덕분에 B가 변경되어도 A는 변경하지 않아도 된다. ( 느슨한 결합 )

- 개발시간을 단축할 수 있다.

- 표준화가 가능하다. ( JDBC )

- 서로 관계없는 클래스들의 관계를 맺어줄 수 있다.

 

출처 : 자바의 정석

 

 

728x90
반응형

'JAVA' 카테고리의 다른 글

hashCode(), toString()  (0) 2022.03.04
내부 클래스 ( inner class )  (0) 2022.03.03
추상 클래스, 추상 메서드  (0) 2022.03.01
참조변수의 형변환  (0) 2022.02.28
다형성 ( polymorphism )  (0) 2022.02.27