JAVA

열 다섯번째, 인터페이스

seung_ho_choi.s 2023. 5. 31. 17:28
728x90

개요: 필자가 자바를 공부하면서 정리한 게시물이다. 드디어 인터페이스 작성하는 날이 오다니..

아는것은 최대한 빼겠다... 시간 낭비.. 

 

인터페이스

- 사전적으로 의미로 두 장치를 연결하는 접속기를 말한다. 즉 두 객체를 인터페이스를 통해 연결한다는 것이다. 

- 인터페이스는 다형셩 구현에 주된 기술로 이용된다. 

ex) 객체 A가 인터페이스의 메소드를 호출하면 실제로 실행되는 것은 인터페이스 뒤편의 객체 B 또는 객체 C 메소드이다.

만약 객체 B의 메소드 실행 결과와 객체 C의 매소드 실행 결과가 다르다면 객체 A는 객체 교체로 인해 다른 결과를 얻게 된다. 

- class 키워드 대신 interface 키워드를 사용한다. 

- 구현 클래스는 public 구현 클래스 implements 인터페이스명 이렇게 한다.! 

- 상속과 다르게 다중상속이 가능하다.

- 다중 인터페이스 구현이 가능하다.  

- 인터페이스에 선언된 필드는 모두 public static final 특성을 갖기 때문에 다음과 같다.

public interface Test1 {
    int a=1;
    int b=1;

}
public  class Test {
    public static void main(String[] args) {
        System.out.println(Test1.a);
    }

}

 

 

- 인터페이스로 구현 객체를 사용하려면 인터페이스 변수를 선언하고 구현 객체를 대입해야 한다.

인터페이스 변수는 참조 타입이기 때문에 구현 객체가 대입되면 구현 객체의 번지를 저장한다. 

 

- 인터페이스는 무조건 추상메소드만 가능! but 디폴트메서는 예외! 아래를 한번 보자  

 

추상메소드

- 리턴 타입, 메소드명, 매개변수만 기술! {}중괄호를 붙이지 않는다.

 

디폴트메소드

- 완전한 실행 코드를 가진 것이다.

- 디폴트매소드 안에서는 상수 필드를 읽거나 추상메소드를 호출할 수 있다. 또한 private 메소드도 가능  

public interface Test1 {
    int a = 1;
    int b = 1;

    public void show1();

    default void show() {
        System.out.println("a");
    }
}

정적메소드

- 인터페이스에 선언된 정적 메소드는 구현 객체 없이 인터페이스명으로 접근해서 호출할 수 있다. 

- 상수 필드를 제외한 나머지 메소드들을 호출할 수 없다.  

 

private 메소드

- 상수 필드, 추상 메소드, 디폴트 메소드, 정적 메소드는 모두 public 접근 제한을 갖는다. 

- private메소드는 디폴트메소드안에서 호출이 가능하다.(360page)

- private 정적메소드는 디폴트메소드, 정적메소드 안에서 호출이 가능하다.(360page)

 

383page

 

대체적으로 상속과 비슷하다. 

728x90