본문 바로가기
Java, JSP

[Java/자바] interface 인터페이스 사용법

by LasBe 2022. 1. 1.
반응형

⚡️interface란

자바에서는 상속 기능으로 편리하게 부모 클래스의 기능을 물려받아 사용할 수 있습니다.

 

그리고 그 상속은 클래스로도 구현이 가능하지만 인터페이스를 통해 더 다양한 기능들을 구현 가능합니다.

 

인터페이스는 클래스와 굉장히 비슷하지만 둘을 구분 지을 몇 가지의 큰 특징이 있는데,

그중 특히 인터페이스는 클래스와 달리 다중 상속이 가능하다는 점을 알아두셔야 합니다.

 

그럼 인터페이스를 아래 순서대로 알아보겠습니다.

  • 인터페이스의 선언
  • 인터페이스의 구현
  • 인터페이스의 다중상속

 

⚡️interface 선언

인터페이스의 멤버로는 상수와 추상 메소드, default 메소드, static 메소드가 있습니다.

 

클래스와 달리 변수 생성이 불가능한 인터페이스는 필드 선언 시 아래와 같이 키워드를 생략해서 생성이 가능합니다.

interface 인터페이스명{	// abstract 생략

	// public static final 제어자 생략
	int 상수명 = 100;
    
    	// public abstract 제어자 생략
	void 메소드명(매개변수);
}

클래스와 달리 인터페이스는 필드에 public static final 제어자만, 메소드는 public abstract 제어자만 적용이 되어집니다.

 

이 제어자는 모든 인터페이스에 공통적으로 적용이 되는 부분이기 때문에 생략이 가능하고 컴파일러 단에서 자동으로 적용이 이루어집니다.

 

⚡️interface 구현

인터페이스는 직접 인스턴스를 생성할 수는 없고 클래스가 상속을 받아야만 생성이 가능합니다.

 

클래스는 extends를 통해 상속받지만 인터페이스를 상속받으려면 아래와 같이 implements 키워드가 필요합니다.

class 클래스명 implements 인터페이스명{
	public void 메소드명() {
	}
}

 

또한 클래스와 인터페이스에서 동시에 상속받는 것도 가능합니다.

class 클래스명  extends 부모클래스명 implements 인터페이스명{...}

 

⚡️interface 다중 상속

인터페이스는 클래스와 달리 여러 개의 인터페이스를 다중 상속받아 하나로 뭉칠 수 있습니다.

 

이는 기능을 더욱 세분화해서 유지보수에 더 유용합니다.

 

간단하게 복합기를 예로 들어 다중 상속에 대한 개념을 아래의 코드에서 알아보겠습니다.

interface Printable{
	int INK = 100;
	void print();
}

interface Scannerable{ void scan(); }

interface Faxable{
	String FAX_NO = "010-12345";
	void send(String tel);
	void receive(String tel);
}

복합기는 프린트와 스캔, 팩스 기능이 포함된 기기입니다.

 

그 기능 3가지를 인터페이스로 선언해준 뒤 아래와 같이 Complexerable로 그 3가지를 다중 상속받습니다.

interface Complexerable extends Printable, Scannerable, Faxable{ }

 

이제 인터페이스는 준비되었으니 클래스로 구현을 해줍니다.

 

인터페이스의 메소드는 추상메소드이기 때문에 빠짐없이 구현하도록 합니다.

class Complexer implements Complexerable{
	int ink;
	Complexer(){ ink = INK; }
	public void print() { System.out.println("종이에 출력합니다. 남은 잉크량 : " + --ink); }
	public void scan() { System.out.println("이미지를 스캔합니다."); }
	public void send(String tel) { 
    	System.out.println(FAX_NO + "에서 "+ tel + "번호로 FAX를 전송");
	}
	public void receive(String tel) {
		System.out.println(tel + "에서 " + FAX_NO + "로 FAX를 수신");
	}
}

 

이로써 3가지 기능을 가진 인터페이스를 복합기가 다중 상속받고 클래스로 구현이 완료되었습니다.

 

마지막으로 인터페이스 사용 시의 장점 3가지입니다.

  • 대규모 프로젝트 개발 시 일관되고 정형화된 개발을 위한 표준화가 가능합니다.
  • 클래스의 작성과 인터페이스의 구현을 동시에 진행할 수 있으므로, 개발 시간을 단축할 수 있습니다.
  • 클래스와 클래스 간의 관계를 인터페이스로 연결하면, 클래스마다 독립적인 프로그래밍이 가능합니다.

 

다중 상속을 통해 세분화된 기능을 만들 수 있는 인터페이스를 알아보았습니다.

반응형

댓글


오픈 채팅