열혈 Java 18 - 자바 인터페이스

whipbaek·2022년 1월 13일
0

열혈Java

목록 보기
18/18

인터페이스

  • 통신 도구, 통신 수단

  • 특정 기능을 활용하는 방법

  • 복잡한 내용을 알필요 없이 클래스를 쉽게 다룰수 있도록 정의해둔 장치, 내용

interface in java

interface Printable {
	public void print(String doc); //추상 메소드
}
  • 추상 메소드 : 메소드가 존재함을 알리는 메소드
class Printer implements Printable {
	public void print(String doc) {
    	System.out.println(doc);
    }
}
  • implements : Printable 인터페이스에서 정의한 추상 메소드를 완성시키겠다. (구현하겠다.)
Printable prn = new Printer();
prn.print("Hello");
  • 인터페이스형 참조변수가 선언이 가능하다.

  • 그리고 이 참조변수는 인터페이스 구현을 완료한 클래스를 참조할 수 있다.

  • 인터페이스형 참조변수로 참조했을때는, 인터페이스에 존재하는 메소드만 실행이 가능하다! (추상 메소드)

  • 단, 구현을 하는 클래스에서 당연하게 구현을 하기위해서 (추상메소드는 몸체가 없으니) 오버라이딩을 하게 될 것이다.

  • 그렇기때문에 인터페이스에 메소드를 실행시켜도 결국은 오버라이딩 관계로 인하여 클래스에 정의된 함수가 실행될것이다.

  • 1개의 인터페이스 뿐만 아니라 여러개의 인터페이스를 구현할 수 있다.

인터페이스의 본질적 의미

인터페이스의 의미와 개념을 비교적 쉽게 이해할 수 있는 예시라고 생각된다.

  • 위와같이 2개의 프린터가 있다고 생각해보자, 프린터 회사는 각 프린터에 맞는 드라이버 클래스를 만들고 제공해줄 것이다.

  • 하지만 이를 실행시키는 OS입장에서는 모든 프린터의 사용 방법이 다르기 때문에 혼란을 겪을수 밖에 없다.

  • 이러한 부분을 보완하고자, OS쪽에서 interface를 만들어서 회사측에 제공해준다, 기능을 명시해주고 이에 맞춘 개발을 요구하는 것이다.

  • 각 회사는 public void print(String doc) 의 추상 메소드를 확인하고 각 회사에 맞는 스타일로 개발할 것이다.

  • OS입장에서는 어떤 프린터가 연결되어있던 상관없이 일관된 메소드로 프린터를 사용할 수 있는것이다.

  • interface는 클래스를 사용하는 방법을 명시해둔 내용이다. 이를 프린터 드라이브 예시로 이해할 수 있다.

interface 상속

  • 위의 예시에서 조금 더 확장해보자.

  • 흑백프린터만 사용하던 어느날, 컬러 프린터가 추가되었다고 가정해보자.

  • 컬러 프린터를 사용하기 위해서는 드라이버(interface) 업그레이드가 필수적으로 동반될 것이다.

  • 그래서 기존 흑백 프린터가 사용하는 드라이버를 업그레이드 한다고 해보자

  • 이 경우에는 컬러프린터는 사용할 수 있겠지만 컬러출력 기능이 없는 흑백프린터 또한 컬러프린터에 관한 추상메소드를 정의해야할 것이다.

  • 흑백프린터에게는 불필요한 이러한 상황을 방지하기 위하여 인터페이스 상속이 등장했다.

  • 위와 같이 컬러프린터 드라이버가 흑백프린터 드라이버를 상속한다. 컬러프린터는 흑백프린팅도 지원해야하기에 두가지의 기능 모두 사용이 가능하다.

  • 흑백프린터는 기존의 드라이버를 사용하면 된다.

  • 컬러프린팅이 되는 프린터에 한해서 관련 interface 메소드를 구현해주면 된다.

//17-2 ③ 강의 이어서 ...

출처 : 윤성우의 열혈 JAVA 프로그래밍

profile
코딩 및 CS에 관하여 공부합니다.

0개의 댓글

Powered by GraphCDN, the GraphQL CDN