인터페이스는 자바에서 여러가지 클래스를 상속할 수 없는 문제를 해결하고자 만든 추상적 형태입니다.
부모 클래스에서는 필요없지만 자식클래스에서는 필요할 수 있는 기능이기 때문에 만들어졌으며,
이 인터페이스는 모두 abstract 메소드 와 상수 만을 가지게 됩니다.
예제
public interface Card {
/* 인터페이스는 클래스가 아니다.
* 멤버 변수가 없습니다.
* 단. constant(상수) 와 정적변수(static)는 가능하다.
* 상수란? 변수가 아닌 변하지 않는 값을 지정하는 방법이다. ( 메모리 구조에서 데이터 영역에 저장된다.)
*/
// 정적변수
public static final int CLOVER = 1;
public static final int HEART = 2;
public static final int DIAMOND = 3;
public static final int SPADE = 4;
String getCardNumber();
void print();
}
public interface Player {
public void play(String name);
public void end();
}
public class MyCard implements Card ,Player {
String cardNumber;
public void setCardNumber(String cardNumber) {
this.cardNumber = cardNumber;
}
@Override
public String getCardNumber() {
return this.cardNumber;
}
@Override
public void print() {
System.out.println("내 카드 숫자는 : " + cardNumber);
}
@Override
public void play(String name) {
# 필요한 기능
}
@Override
public void end() {
# 필요한 기능
}
}
Mycard 는 Card와 Player 두가지를 구현하고 있습니다.
부모인 card 에서는 필요하지 않으나, 자식인 Mycard 에서는 Player 라는 기능또한 필요하기에 두가지 모두 상속을 받아야 하나 card 와 player가 class 로 정의되어있다면 한가지밖에 상속이 안되기 때문에 interface로 만들어 상속을 받게 됩니다.
'개발 > 자바' 카테고리의 다른 글
Java - HashMap (0) | 2023.01.25 |
---|---|
Java - ArrayList (0) | 2023.01.25 |
Java - 문자열 처리 함수 (0) | 2023.01.25 |
Java - wrapper class (Integer,Float 등등) (0) | 2023.01.25 |
Java - abstract class / method (0) | 2023.01.20 |