인터페이스(InterFace)
1. 클래스를 만들기 위한 설계도
- 클래스는 설계도이다. 인터페이스는 설계도(클래스)를 만들기 위한 설계도이다.
- 클래스보다 상위 개념이며 더 추상적이다.
2. 표준화를 위한 약속(규칙)
- 서로 다른 하드웨어가 연결될 때 연결되는 지점을 인터페이스라고 한다.
- 인터페이스는 표준화된 규격을 말한다.
- 인터페이스란 표준화된 약속이고 규칙이다.
- 문법이나 특징이 클래스와 같다.
3. 순수(완전) 추상클래스
- 100퍼센트 추상메서드만 가지고 있다.
<추상클래스>
- 추상메서드를 하나이상 가지고 있다.
- 인스턴스를 하나 이상 가지고 있다.
- 모든 것을 자신에게 상속하는 용도로만 쓰겠다.
4. 다중 상속 지원
- 클래스는 단일 상속만 지원하지만 인터페이스는 다중상속을 지원한다.
<인터페이스의 특징 3가지>
- 인터페이스 안에있는 변수는 기본적으로 static이 생략되어 있다.
- 인터페이스 안에있는 모든 변수는 final 상수이다.
- 인터페이스는 public이 포함되어 있다.
<인터페이스는 왜 다중상속을 해야하는가?>
- 일반상속 : 덩어리로 있으면 필요 없는 것도 물려줘야한다.
- 다중상속 : 필요한 것만 하나씩 상속 받아올 수 있다.
인터페이스는 추상클래스로만 이루어져 있기 때문에 다중상속을 할 수 있다.
ctrl + shift +o
- import 추가하는 단축키
import 패키지명.*;
- 패키지 안에 있는 모든 클래스를 가져오라는 의미
extends (확장) 과 implements (구현)의 쓰임
extends (확장)
- 서로 같은 것을 상속받을 때 사용한다.
- 원래있던 기능에서 덧붙힌다.
implements (구현)
- 서로 다른 것을 상속 받을 때
- 클래스가 인터페이스로 부터 상속받을 때
- 원래 없던 것에서 하나를 더한다.
인터페이스는 클래스에게 상속을 해주는 것이다.
//패키지 안에 있는 모든 클래스를 가져오라는 의미
import Inter.*;
//인터페이스 안에있는 변수는 기본적으로 static이 생략되어 있다.
//Inter3를 상속받았기 때문에 Inter1, Inter2, Inter3의 변수를 모두 쓸 수 있다.
public class InterfaceTest implements Inter3 {
public void inter1Method() {
}
public static void main(String[] args) {
// TODO 인터페이스 문법 테스트
System.out.println("inter1 : " + Inter1.a);
//Inter1.a = 100; public static final
System.out.println("inter1 : " + a);
//상속을 받지 않을 때는 Inter2.b로 써야한다.
System.out.println("inter2 : " + Inter2.b);
//상속을 받았기 때문에 b만 쓴다.
System.out.println("inter2 : " + b );
System.out.println("inter3 : " + c);
}
}
package Inter;
public interface Inter1 {
int a = 10; //public static final
//public이 생략이 되어 있다.
void inter1Method();
}
package Inter;
public interface Inter2 {
//상속받은 int a가 보이지 않지만 있다.
int b = 20;
}
package Inter;
//인터페이스는 다중상속이 가능하다.
public interface Inter3 extends Inter1, Inter2{
//상속받은 int a, b가 보이지 않지만 있다.
int c = 30;
}
※ 결과값
inter1 : 10
inter1 : 10
inter2 : 20
inter2 : 20
inter3 : 30
'개발 > Java' 카테고리의 다른 글
[java] 컬렉션 Collection (0) | 2017.10.28 |
---|---|
[java] java.util 패키지를 알아보자. (0) | 2017.10.27 |
[java] 패키지 package (0) | 2017.10.25 |
[java] 클래스 (Class) part.3 : 상속 (Inheritance ) (0) | 2017.10.24 |
[java] 클래스 (Class) part.2 (0) | 2017.10.24 |