본문 바로가기

청년취업아카데미/DayLog

[ Java ] Day 01 - ③ 인터페이스

...더보기

JAVA 프로그래밍 언어를 배우면서 부족했던 부분인 인터페이스를 오늘 보완하였습니다. 인터페이스의 개념과 사용법, 역할에 대해서 알아보는 시간을 가졌습니다. 자바 프로그래밍을 여러번 반복 학습하였지만, 추상 클래스와 인터페이스는 개념을 정확히 다잡지 않아 항상 어려운 부분이었습니다.

오늘 강의를 통해 인터페이스의 개념에 대해서 정확히 알게 되었고, 추상 클래스와 인터페이스를 구분할 수 있게 되었습니다. 인터페이스의 간단한 예제도 첨부합니다.

# 인터페이스란?

  • 인터페이스란 일종의 추상 클래스로서, 추상 클래스보다 추상화 정도가 높다.
  • 인터페이스는 관련이 없는 것끼리 묶기 위한 도구이다.

 

  • 인터페이스는 추상메소드와 상수만을 멤버로 가질 수 있다.
  • 인스턴스를 생성할 수 없고, 클래스 작성에 도움을 줄 목적으로 사용된다.
  • 미리 정해진 규칙에 맞게 구현하도록 표준을 제시하는 데 사용된다.

 

# 인터페이스의 구조

interface 인터페이스이름 {
	public static final 타입 상수이름 = 값;
	public abstract 메소드 이름(매개변수 목록);

	// 멤버변수 - 모든 멤버변수는 public static final 이어야하며, 이를 생략가능(그냥 생략함)    
	// 메소드 - 모든 메소드는 public abstract 이어야하며, 이를 생략가능(그냥 생략함)
}

 

# 인터페이스의 역할

  1. 양식의 역할(큼) - 정해진 규칙
  2. 다중 상속 지원(극히 일부분)
  3. 연관 없는 class와 class를 연결해줌(매우 중요)

 

# 인터페이스 예제

  • 클래스 선언부
...더보기
public interface Robot { }

class DancingRobot implements Robot {
	public void dance() {
		System.out.println("춤을 춰요!");
	}
}
class DrawingRobot implements Robot { 
	public void draw() {
		System.out.println("그림을 그려요!");
	}
}
class SingingRobot implements Robot{
	public void sing() {
		System.out.println("노래를 불러요!");
	}
}
  • 클래스 실행부
...더보기
public class RobotEx {
	static void action(Robot r) {
		if( r instanceof DancingRobot) {
			((DancingRobot)r).dance();
		}else if(r instanceof DrawingRobot) {
			((DrawingRobot)r).draw();
		}else {
			//((SingingRobot)r).sing();
			SingingRobot sr = (SingingRobot)r;
			sr.sing();
		}
	}
	
	public static void main(String[] args) {
		Robot[] rb = new Robot[3];
		rb[0] = new DancingRobot();
		rb[1] = new DrawingRobot();
		rb[2] = new SingingRobot();
		
		for(Robot r : rb)
			action(r);
	}
}
  • instanceof 연산자클래스의 인스턴스인지 검사하는 연산자이다.