본문 바로가기

JAVA

[ JAVA / 자바 ] 인터페이스란 ? 인터페이스 사용법

• 인터페이스란 ?

다른 클래스를 작성할 때 기본이 되는 틀을 제공하면서, 다른 클래스 사이의 중간 매개 역할까지 담당하는 추상 클래스를 의미한다. 인터페이스는 오로지 추상 메소드와  상수만을 포함할 수 있다.

 인터페이스의 특징

1) 다중 상속 가능

2) 추상 메소드만 보유

3) 생성자 생성 불가

4) 메소드 오버라이딩 필수

 인터페이스의 선언

접근제어자 interface 인터페이스명 {

	public static final 타입 상수이름 = 값;
    ...
    public abstract 메소드명(매개변수);
    
  }

 인터페이스의 구현

class 클래스명 implements 인터페이스명 {
    ...
}

 인터페이스 예제

// 인터페이스
// PlayinCard.java

public interface PlayingCard {

	// 인터페이스는 추상클래스보다 더 뼈대만 있는 것

	// 인터페이스는 멤버변수가 없고 함수의 이름만 있는 것
	// 단, 상수는 가능하다. 
	// (상수란, 변수인데 한번 값을 저장하면 값을 바꿀수 없는 것)

	// 카드의 클로버는 1, 하트는 2, 다이아는 3, 스페이드는 4라고 지정
	
	public static int CLOVER = 1;
	public static int HEART = 2;
	public static int DIAMOND = 3;
	public static int SPADE = 4;
	
	public String getCardNumber();
	public void print();
	
}

 

// MyCard.java

public class MyCard implements PlayingCard {

	String cardNumber;
	
	MyCard() {
		
	}
	
	MyCard(String cardNumber) {
		this.cardNumber = cardNumber;
	}
	
	@Override
	public String getCardNumber() {
		return cardNumber;
	}

	@Override
	public void print() {
		System.out.println("card number : " + cardNumber);
	}

}

 

// 실행파일
// InterfaceMain.java

public class InterfaceMain {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		MyCard card = new MyCard();
		card.cardNumber = "7";
		
		String number = card.getCardNumber();
		System.out.println(number);

		card.print();
		
		MyCard card2 = new MyCard("5");
		card2.print();

		// 상수를 사용할 때는 보통은 '객체.상수' 로 사용하지 않고
		// System.out.println(card2.SPADE);
		
		// 상수를 사용할 때는 상수를 정의한 '인터페이스나 클래스명.상수'로 사용한다.
		System.out.println(PlayingCard.CLOVER);
	}

}