1. 인터페이스
프로젝트의 설계도로 생각하면 좋다. 서로다른 클래스를 연결시켜주는 연결 장치라고 보면 된다.
- 추상메소들로만 이루어져 있으며, 메소드의 선언만 가능하다.
- 메소드는 표준화된 공통기능을 가진다.
- 사용하기 위해서는 implements 키워드를 사용하여야한다.
- 서로다른 클래스를 연결시켜주는 연결 장치라고 보면 된다.
- 인터페이스 내에 존재하는 메소드는 무조건 public abstractㄹ 선언 된다.
- 인터페이스 내에 존재하는 변수는 무조건 public static final로 선언 된다.
- 인터페이스는 다중 상속과 비슷한 기능을 제공한다.
이런 특징을 가진 인터페이스는, 알고보면 상당히 편리한 기능을 지니고 있다. 우리가 만약 프로젝트를 진행하고 있는데, 인터페이스를 사용하면 다른 구성원들이 각각의 부분을 완성할때 까지 기다리지 않고 서로간의 규약만 정해두어 내 부분만 따로 나눠서 작성된 코드를 컴파일 할 수 있다. 즉, 인터페이스는 외부를 서로 이어주는 다리 역할을 한다.
우선 간단하게 인터페이스를 구현해보자.
1 2 3 4 5 6 7 8 | interface 인터페이스명 [extends 상속받을 인터페이스명, ..., ...] { void 추상메소드명(); // = public abstract void 추상메소드명 ... } |
1 2 3 4 5 | class 클래스명 [extends 상속받을 클래스명, ..., ...] implements 인터페이스명 { ... } |
interfaceMain.java
1 2 3 4 5 6 7 8 9 10 11 12 | package javawork; public class interfaceMain { public static void main(String[] args) { InterfaceExample ife = new InterfaceExample(); ife.putYourHandUp(); } } | cs |
우선 IntExample.java 에서 인터페이스 정의가 되었다. 안에는 putYourHandUp이라는 추상 메소드가 존재한다. 그리고 InterfaceExample.java 클래스는 IntExample 인터페이스를 상속받는다. interfaceMain.java에서 객체를 생성하고 7행에서 putYourHandup 메소드를 호출한다.
한가지더, 인터페이스를 사용하면서 주의해야 할 사항이 있다.
클래스에 인터페이스 상속 시 인터페이스 내에 정의된 모든 추상 메소드를 구현하여야만 정상적인 컴파일이 가능하다.
1 2 3 4 5 6 | package javawork; public interface IntExample { public void putYourHandsUp(); } | cs |
1 2 3 4 5 6 | package javawork; public interface IntExample2 { public void putYourHandsDown(); } | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | package javawork; public class InterfaceExample implements IntExample, IntExample2{ public void putYourHandsUp(){ System.out.println("손들어!"); } public void putYourHandsDown() { System.out.println("손내려!"); } } | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | package javawork; public class interfaceMain { public static void main(String[] args) { InterfaceExample ife = new InterfaceExample(); ife.putYourHandsUp(); ife.putYourHandsDown(); } } | cs |
달라진게 있다면 하나의 인터페이스가 정의되고 그 인터페이스 내에 putYourHandsDown이라는 추상 메소드가 정의된 점, 인터페이스 다중 상속부분, putYoutHandsDown 구현 부분이 추가된 점밖에 없다.
유심히 보면 알겠지만 implements 예약어 뒤에 상속받을 인터페이스가 1개가 아닌 2개로 늘어났다는 점이다. 마지막 또하나 알아야 할 게 잇다면, 클래스에 한 개 이상의 인터페이스를 정의할 수 도 있지만 인터페이스 간 상속이 가능하다는 점도 알아두길 바란다.
이상으로 간단하게 인터페이스의 설명을 마친다.
'Dev > JAVA ' 카테고리의 다른 글
JAVA 다형성 (1) | 2018.01.17 |
---|---|
JAVA 추상 클래스 (0) | 2018.01.15 |
JAVA 상속 (2) | 2018.01.12 |
[JAVA] jsp / java를 이용한 DB연동 (0) | 2017.12.04 |
[JAVA] 다른클래스 호출및선언 setting,getting (0) | 2017.12.01 |