본문 바로가기
언어(Language)/Java

[Java] 인터페이스(interface)

by 올리브영 2023. 2. 28.
728x90
반응형

인터페이스란?


  • 모든 메서드가 추상 메서드로 선언된다.
  • 모든 변수는 상수로 선언된다.
  • 다중 상속이 가능하다.
  • 인터페이스는 new를 할 수 없다.(인스턴스화 불가능)
  • private 사용 할 수 없다.
  • 부모 인터페이스를 물려받은 자식 클래스는 모두 오버라이딩 해야한다.
public class Main{
    public static void main(String[] args){
        사람 사람a = new 홍길동();
        택시기사 택시기사a = (택시기사)사람a;
        버스기사 버스기사a = (버스기사)사람a;
    }
}

abstract class 사람{

}

interface 택시기사{
}

interface 버스기사{
}

class 홍길동 extends 사람 implements 택시기사, 버스기사{
}

 

인터페이스 구현과 형 변변환


  • 인터페이스를 구현한 클래스는 인터페이스 형으로 선언한 변수로 형 변환 할 수 있다.
  • 상속에서의 형 변환과 동일한 의미이다.
  • 클래스 상속과 달리 구현 코드가 없으므로 여러 인터페이스를 구현할 수 있다.
  • 형 변환되는 경우 인터페이스에 선언된 메서드만을 사용가능하다.

 

인터페이스를 사용하는 이유


  • 클래스나 프로그램이 제공하는 기능을 명시적으로 선언
  • 클라이언트 프로그램은 인터페이스에 선언된 메서드 명세만 보고 이를 구현한 클래스를 사용할 수 있다.
  • 어떤 객체가 하나의 인터페이스 타입이라는 것은 그 인터페이스가 제공하는 모든 메서드를 구현했다는 의미이다.
  • 인터페이스를 구현한 다양한 객체를 사용 - 다형성

 

구상클래스 vs 추상클래스 vs 인터페이스


종류 구상클래스 추상클래스 인터페이스
추상성 0% 0% ~ 100% 100%
추상메서드 개수 0개 0 ~ n개 모든 메서드
구상성 100% 0% ~ 100% 0%
구상메서드 개수 모든 메서드
(추상메서드 받은경우 오버라이딩 필수)
0 ~ n개 0개
다른 클래스에 제공자로 쓰일 때 extends extends implements
객체화(new) 가능 여부 가능 불가능 불가능

 

728x90
반응형