Model2 - 미니쇼핑몰 예제(인터페이스)

2020. 12. 14. 03:52BACK END/JAVA

1. 인터페이스

 

1) 인터페이스의 정의

- 구성요소가 추상 클래스와 final변수(상수)로만 이루어진 클래스

- 일반클래스가 인터페이스를 상속해주어야 구현이 가능함

* 상수는 public static final 키워드를 사용함

 

 

2) 인터페이스의 사용목적

- 클래스가 상속을 통해 구현하는 것에 한계가 있는 경우,

자바에서 원래는 불가능한 다중상속을 흉내내기 위한 도구임

 

 

3) 인터페이스의 특징

- 다중 구현이 가능함 - 클래스는 단일상속만, 인터페이스는 다중구현을 지원함

- 일반 클래스는 여러 인터페이스를 다중상속할 수 있음

- 인터페이스 간 상속에는 다중상속이 제공됨

- 상속받은 일반 클래스는 인터페이스의 추상메소드를 모두 재정의해야 함

 

 

4) 추상클래스와 인터페이스의

① 공통점

- 추상메소드를 갖는 것, 객체생성 불가능함, 상속받은 서브클래스에서 메소드를 정의함

- 오버라이딩할 땐 꼭 public을 써줌 (static메소드는 올 수 없고 메소드는 기본적으로 public성질을 갖기 때문)

- 인터페이스에서 선언한 멤버필드는 상수임 (즉, public static final의 속성을 갖고 있음)

② 차이점

- 인터페이스로 선언된 클래스를 일반 클래스가 상속받을 때, implements를 사용함

- 인터페이스끼리 상속할 때, extends를 사용함.

 

 

5) 사용방법

- 인터페이스 정의

public interface [인터페이스명]  상수형변수 ; { abstract public [반환타입] [메소드명] (매개변수) ; }

- 일반 클래스에서 사용

public class [자식클래스명A] implements [인터페이스명] { 필드; 메소드; }

- 다중 상속

public class [자식클래스명B] implements [인터페이스명1], [인터페이스명2], ... , [인터페이스명n] {필드;  메소드;}

 

- 예시

public class VodClass implements OttService {

// 멤버변수

      int id;

      String app_name;

// 오버라이딩된 추상메소드

@overriding

public void Info() {

      system.out.println("Ranking: " + ranking);

      system.out.println("AppName : " + appname);

//인터페이스에서 제공하는 상수 사용

      system.out.println("Frame Size : " + OttService.FrameSize_M);

}

public static void main(String[] args) {

     VodClass vc = new VodClass();

      vc.ranking = 10;

      vc.appname = "Nexflix";

      vc.Info();

      }

}