• 인터페이스란 ?
다른 클래스를 작성할 때 기본이 되는 틀을 제공하면서, 다른 클래스 사이의 중간 매개 역할까지 담당하는 추상 클래스를 의미한다. 인터페이스는 오로지 추상 메소드와 상수만을 포함할 수 있다.
• 인터페이스의 특징
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);
}
}
'JAVA' 카테고리의 다른 글
[ JAVA / 자바 ] HashMap 이란? HashMap 사용법 (0) | 2022.07.06 |
---|---|
[ JAVA / 자바 ] ArrayList 란 ? ArrayList 사용법 (0) | 2022.07.06 |
[ JAVA / 자바 ] 추상클래스란? 추상클래스의 사용법 (0) | 2022.07.06 |
[ JAVA / 자바 ] 업캐스팅(Upcasting), 다운캐스팅(Downcasting)이란? (0) | 2022.07.05 |
[ JAVA / 자바 ] 부모생성자 호출을 위한 super 사용법 (0) | 2022.07.05 |