인터페이스
: 설계라는 특수한 목적의 클래스
-추상 메서드만 정의하기 위한 클래스
참고)
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();
}
}
interface A
-void method()
interface B
-void method()
class C implements A, B
-public void method() {...} // 인스턴스에서 호출
구현부의 메서드가 호출됨.
인터페이스는 추상 메서드이기 떄문에 호출 주체는 명확(구현한 클래스의 메서드)
클래스에서는 다중 상속시 인스턴스 메서드가 동일하면 하위클래스가 호출 주체를 정하지 못함
클래스에서 상속은 단일 클래스만 상속 가능
public interface Calculator {
int num = 10; //public static final 자동 추가
int add(int num1, int num2); //public abstract 자동으로 추가
}
개념간 체계 나눌때
다중 상속 가능
1.기본생성자 : 생성자를 정의하지 않은 경우
2.super() : 모든 생성자 메서드의 첫줄(super()를 정의하지 않은경우)
3.참조변수.toString();
참고) 컬렉션 프레임워크
-Collevtion: 데이터 군집 : 자료
-Framework: 표준적인 설계 틀