[SEB BE] Section 1. 추상화 - 인터페이스

박두팔이·2022년 12월 30일
0

자바

목록 보기
15/26

학습목표

  1. 인터페이스란?
  2. 인터페이스의 기본 구조
  3. 인터페이스의 구현
  4. 인터페이스의 다중 구현
  5. 인터페이스의 장점

인터페이스

1. 인터페이스

자바 객체지향 프로그래밍 추상화에서 가장 핵심적인 역할을 담당하는 것이 추상클래스와 인터페이스이다.

interface는 "-간/사이"를 뜻하는 inter와 "얼굴/면"을 의미하는 face의 결합으로 구성된 단어로 두 개의 다른 대상 사이를 연결한다는 뜻을 가지고 있다.

컴퓨터 프로그래밍에에서 사용하는 인터페이스도 "서로 다른 두 시스템, 장치, sw를 이어주는 접속장치" 라고 이해하면 된다. 대표적인 예로는 인터페이스의 GUI가 있다.

인터페이스와 추상화의 차이?

공통적으로는 자바에서 추상화를 구현한다는 것이고 차이점으로는 인터페이스가 추상클래스보다 더 높은 추상성을 가지고 있다는 점에서 차이가 있다.

추상클래서 : 미완성 설계도
인터페이스 : 기초적인 밑그림

추상클래스는 메서드바디가 없는 추상메서드를 하나 이상 가지고 있다는 점 외엔 일반 클래스와 같다.

반면 인터페이스는 기본적으로 추상메서드와 상수만을 멤버로 가질 수 있다는 점에서 추상화정도가 더 높다고 할 수 있다. 즉, 인터페이스는 추상메서드의 집합으로 이뤄져 있다고 볼 수 있다.

2.인터페이스의 기본 구조

인터페이스는 클래스를 작성하는 방법과 유사하지만 class키워드 대신 interface키워드를 사용하면 된다.

public interface InterfaceEx {} // 인터페이스

인터페이스는 내부의 모든 필드가 public static final로 정의된다.

 public static final int rock =  1; 
 // 인터페이스 인스턴스 변수 정의

모든 인터페이스의 필드와 메서드에는 위의 요소가 내포되어있기 때문에 명시하지 않아도 전부 생략이 가능하다. 자바 컴파일러가 자동으로 추가해주기 때문이다.

final int scissors = 2; // public static 생략
static int paper = 3; // public & final 생략

인터페이스는 추상메서드만 존재한다.
public abstract String getPlayingNum();
		void call() //public abstract 생략 

📒 인터페이스 summary!

  1. interface키워드로 인터페이스 생성
  2. 메서드 바디가{} 없는 추상메서드만 사용할 수 있다.
  3. 인터페이스 인스턴스 변수는 public static final이 타입 앞에 붙는다. (생략가능, 컴파일러가 자동으로추가해줌)
  4. 인스턴스명에는 관례적으로 -able이 붙는다.

2. 인터페이스의 구현 : implements

추상클래스와 마찬가지로 인터페이스 그 자체로 인스턴스를 생성할 수 없고 메서드 바디를 정의하는 클래스를 따로 작성해주어야 한다.

// 추상클래스의 상속
class 자식클래스명 extends 부모클래스명{}

// 인터페이스의 구현
class 클래스명 implements 인터페이스명{}

⭐️ 클래스가 어떤 인터페이스를 구현한다는 것?
: 인터페이스 내의 모든 추상메서드들해당 클래스내에서 오버라이딩하여 바디를 완성한다는 뜻이다. ⭐️
인터페이스는 자신을 구현하는 클래스에게 자신이 갖고있는 모든 추상메서드들을 반드시 구현하도록 강제한다.

interface Carable{ // 인터페이스 생성
	(public static final)String name=" "; // 인터페이스 필드선언.
	// 변수타입 앞 ()는 생략해도 됨. 

    // 인터페이스 추상메서드 선언
    (public static void) talk();
}

class Car implements Carable{ //인터페이스 구현
	void talk(){
    	System.out.println("말하기");
    }
}	

3. 인터페이스의 다중 구현

상속관계에서는 sub클래스는 하나의 상위 클래스만 상속받을 수 있었지만 인터페이스는 다중적 구현이 가능하다.

  • 하나의 클래스는 여러 개의 인터페이스를 구현할 수 있다.
  • 인터페이스는 인터페이스로부터만 상속이 가능하다.
  • 클래스와 달리 Object클래스와 같은 최고 조상이 존재하지 않는다.
class ExampleClass implements ExampleInterface1, ExampleInterface2, ExampleInterface3 { 
				... 생략 ...
}
profile
기억을 위한 기록 :>

0개의 댓글