728x90
인터페이스는 추상 메소드와 상수로만 이루어져 있다. 구현된 코드가 없기 때문에 인터페이스로 인스턴스를 생성하는 것은 불가능하다. 인터페이스에서 선언한 메소드는 컴파일 과정에서 추상 메소드로 변환된다. 또한, 여기서 선언한 변수는 모두 컴파일 과정에서 값이 변하지 않는 상수로 자동 변환된다.
클래스에서 인터페이스 구현하기
:상속에서는 extends 예약어를 사용했다면, 인터페이스에서는 implements 예약어를 사용한다. 클래스에서 implements를 통해 인터페이스를 구현했다면 추상메소드를 구현해주어야한다. 안할 경우, 오류가 발생한다.
인터페이스는 인터페이스를 구현할 클래스가 어떤 기능의 메소드를 제공하는지 명시한다.
한 클래스가 여러 인터페이스를 구현하는 경우
:Buy buyer = customer; 처럼 customer를 Buy 인터페이스형 변수에 대입하면 형 변환이 일어나 Buy 인터페이스에 선언한 메서드만 호출할 수 있다. Sell형도 마찬가지이다. 그리고 원래의 인스턴스 자료형으로 다운 캐스팅하기 위해서는 instanceof를 사용하여 본래 자료형으로 변환이 가능하다.
package interfaceex;
public interface Buy {
void buy();
}
package interfaceex;
public interface Sell {
void sell();
}
package interfaceex;
public class Customer implements Buy,Sell {
@Override
public void sell() {
System.out.println("구매하기");
}
@Override
public void buy() {
System.out.println("판매하기");
}
}
package interfaceex;
public class CustomerTest {
public static void main(String[] args) {
Customer customer = new Customer();
Buy buyer = customer;
buyer.buy();
Sell seller=customer;
seller.sell();
if(seller instanceof Customer) {
Customer customer2 = (Customer)seller;
customer2.buy();
customer2.sell();
}
}
}
출처: Do it! 자바 프로그래밍 입문_박은종 지음
728x90
'Java' 카테고리의 다른 글
Java_Scanner 버퍼 비우기 (0) | 2022.07.06 |
---|---|
Java_컬렉션 프레임워크 (0) | 2021.03.02 |
Java_추상 클래스 (0) | 2021.02.20 |
Java_상속 (0) | 2021.02.20 |
Java_싱글톤 패턴 (0) | 2021.02.19 |