자바 스터디

8주자 과제: 인터페이스

삶은겨란 2022. 6. 4. 20:27

목표

자바의 인터페이스에 대해 학습하세요.

목차

1. 인터페이스 정의하는 방법

2. 인터페이스 구현하는 방법

3. 인터페이스 레퍼런스를 통해 구현체를 사용하는 방법

4. 인터페이스 상속

5. 인터페이스의 기본 메소드 (Default Method), 자바 8

6. 인터페이스의 static 메소드, 자바 8

7. 인터페이스의 private 메소드, 자바 9


1. 인터페이스 정의하는 방법

interface 키워드

인터페이스는 클래스들이 구현해야 하는 동작을 지정하는데 사용되는 추상 자료형이다. (=규격, 틀)

클래스들이 기능을 서로 다르게 구현할 수 있도록 하는 클래스의 규격 선언, 클래스의 다형성 실현 도구.

interface PhoneInterface{ // 인터페이스 선언
    public static final int TIMEOUT = 10000; // 상수 필드. public static final 생략가능
    public abstract void sendCall(); // 추상 메소드. public abstract 생략가능
    public default void printNum(){ // 디폴드 메소드. public 생략가능
    	System.out.println("NUM:");
        };
}
  • 추상 메소드: public abstract, 생략 가능, 다른 접근 지정으로 지정할 수 없다.

 

특징

  • 인터페이스는 객체를 생성할 수 없다.
  • 인터페이스 타입의 레퍼런스 변수는 선언 가능
  • 인터페이스끼리 상속 가능
  • 인터페이스를 상속받아 클래스를 작성하면 인터페이스의 모든 추상 메소드를 구현해야 한다.

 

 

2. 인터페이스 구현하는 방법

인터페이스의 모든 추상 메소드를 구현한 클래스를 작성

class SamsungPhone implements PhoneInterface{ // 인터페이스 구현
	// 인터페이스에 있던 추상 메소드를 구현
    public void sendCall(){
    	System.out.println("알림음");
    }
    
    // 추가로 메소드를 작성할 수 있음
    public void flash(){
    	System.out.println("불 켜짐");
    }
}

 

 

3. 인터페이스 레퍼런스를 통해 구현체를 사용하는 방법

PhoneInterface galaxy;

 

4. 인터페이스 상속

클래스는 인터페이스를 상속받을 수 없다. 인터페이스끼리만 상속이 가능하다.

상속은 extends 키워드 사용. 다중상속도 가능하다.

interface MobilePhoneInterface extends PhoneInterface{
    void sendSMS();
    void receiveSMS();
}

 

 

5. 인터페이스의 기본 메소드 (Default Method), 자바 8

  • default 메소드: 접근 지정자는 public만 가능.
  • 인터페이스 내에 코드 작성.

 

6. 인터페이스의 static 메소드, 자바 8

  • static 메소드: 접근 지정자가 없으면 public이고 private 가능
  • 인터페이스 내에 코드 작성.

 

7. 인터페이스의 private 메소드, 자바 9

  • private 메소드: 인터페이스 내에서만 호출 가능.
  • 인터페이스 내에 코드 작성.

 

추가) 인터페이스와 추상클래스

  목적 구성
추상클래스 추상 클래스는 서브 클래스에서 필요로 하는 대부분의 기능을 구현하고 서브 클래스가 상속받아 활용할 수 있도록 하되, 서브클래스에서 구현할 수밖에 없는 기능만을 추상 메소드로 선언하여 서브 클래스에서 구현할도록 하는 목적(다형성) - 추상 메소드와 일반 메소드 모두 포함
- 상수, 변수 필드 모두 포함
인터페이스 인터페이스는 객체의 기능을 모두 공개한 표준화 문서와 같은 것으로, 개발자에게 인터페이스를 상속받는 클래스의 목적에 따라 인터페이스의 모든 추상 메소드를 만들도록 하는 목적(다형성) - 변수 필드는 포함하지 않음
- 상수, 추상 메소드, 일반 메소드, 디폴트 메소드, static메소드 모두 포함
- protected 접근 지정 선언 불가
- 다중 상속 지원

 


명품 JAVA Programming/황기태,김효수

 

'자바 스터디' 카테고리의 다른 글

10주차 과제: 멀티쓰레드 프로그래밍  (0) 2022.06.10
9주차 과제: 예외 처리  (0) 2022.06.08
7주차 과제: 패키지  (0) 2022.06.04
6주차 과제: 상속  (0) 2022.05.30
5주차 과제: 클래스  (0) 2022.05.20