Java -8

김정현·2024년 4월 22일
0

JAVA

목록 보기
8/19

인터페이스

인터페이스

: 설계라는 특수한 목적의 클래스

-추상 메서드만 정의하기 위한 클래스

참고)
API(Application Programming Interface) : 개발시 필요한 설계 가이드 라인

JDBC API(Java DataBase Connectivity Application Programming Interface)

인터페이스 문법

interface 인스페이스명 {
	추상 메서드 정의..
}

-abstract를 기입하지 않아도 에러가 발생하지 않음.

-메서드 내부를 정의하면 오류가 발생함.

클래스에서 인터페이스 구현하기

implements : 구현

class 클래스명 implements 인터페이스1, 인터페이스2, ... {

}

인터페이스에 public abstract 자동으로 추가되어있기 때문에 재정의 시에도 반드시 public을 작성해줘야함

public interface Calculator {
    int add(int num1, int num2);   //public abstract 자동으로 추가
}

디폴트 메서드

default 키워드를 사용해서 완전한 인스턴스 메서드를 구현할 수도 있다.

-자바7에서 추가
-완전 구현된 인스턴스 메서드 추가 가능(목적엔 맞지 않음)

public interface Buyer {
    void buy();
    
     default void order() {
         System.out.println("바이어에서 주문");
     }
}

이름이 같은 두개의 디폴트 메서드를 정의했을 경우

인터페이스를 구현한 클래스에서 super를 사용하여 지정해줄 수 있다.


 public void order() {
        Seller.super.order();
    }
}

정적 메서드 - 객체 생성과 관련없이 독자적으로 사용 가능. (인터페이스 명으로 접근 가능)

private 메서드

인터페이스 활용

  1. 한 클래스가 여러 인터페이스를 구현하는 경우
interface A 
 -void method()
 
 interface B
 -void method()
 
 class C implements A, B
  -public void method() {...}   // 인스턴스에서 호출
  • 다중 구현 가능

구현부의 메서드가 호출됨.
인터페이스는 추상 메서드이기 떄문에 호출 주체는 명확(구현한 클래스의 메서드)

  • 다중 상속 불가

클래스에서는 다중 상속시 인스턴스 메서드가 동일하면 하위클래스가 호출 주체를 정하지 못함

클래스에서 상속은 단일 클래스만 상속 가능

인터페이스는 객체를 생성하는 것에 목적이 있지않다. 고로, 멤버 변수와 같이 int num = 10; 을 선언하려 한다면 객체와 관련없는 public static final 을 생략한채로 선언되게 된다.

public interface Calculator {
    int num = 10;  //public static final 자동 추가
    int add(int num1, int num2);   //public abstract 자동으로 추가
}

인터페이스 상속하기 (extends)

개념간 체계 나눌때
다중 상속 가능

컴파일러가 자동 추가해주는 것들

1.기본생성자 : 생성자를 정의하지 않은 경우

2.super() : 모든 생성자 메서드의 첫줄(super()를 정의하지 않은경우)

3.참조변수.toString();

참고) 컬렉션 프레임워크
-Collevtion: 데이터 군집 : 자료
-Framework: 표준적인 설계 틀

  • 자료구조
    List 인터페이스 : 순차 자료구조 설계
    Set 인터페이스 : 집합 자료구조 설계
    Map 인터페이스 : 사전 자료구조 설계

0개의 댓글