인터페이스(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

+ Recent posts