- 인터페이스는 순수하게 추상 메서드로 이루어진 클래스. 인터페이스를 계속해서 클래스라고 칭하는 것은 인터페이스도 컴파일하면 .class 파일로 되기 때문.
- 인터페이스는 추상 메서드로 이루어져 있지만 멤버 변수로 스태틱 상수 변수(Static Constant Variable)는 포함할 수 있음.
- 상수 변수를 선언하는 예
-> final int TOP = 1000;
- 상수(Constant)는 일반적으로 바꿀 수 없는 수를 말함. 그리고 상수 변수(Constant Variable)는 변수이지만 단 한번의 초기화를 거친 후에는 절대 그 값을 변경할 수 없는 특징이 있음. 만약 상수 변수를 선언한 후 다른 값을 할당하면 에러 발생.
- 상부 변수는 단 한 번의 할당을 함.
-> final int TOP = 1000;
-> TOP = 2000; // 오류 : 상수 변수는 단 한번 초기활 수 있음.
- 스태틱(static)의 속성으로 인터페이스에 추가할 수 있음. 스태틱(Static)의 속성은 객체의 생성과는 하등의 관련이 없기 때문에 인터페이스에 삽입한다고 해도 별무리가 없음.
============================================================================================================
public interface BodySign {
// 1. 키워드를 명시한 경우
public static final int CENTER = 1;
public static final int LEFT = 2;
public static final int RIGHT = 3;
public static final int DOWN = 4;
public static final int UP = 5;
public abstract void throwBall(int how);
/* 2. 키워드를 명시하지 않은 경우
int CENTER = 1;
int LEFT = 2;
int RIGHT = 3;
int DOWN = 4;
int UP = 5;
void throwBall(int fow);
*/
}
============================================================================================================
BodySign 인터페이스 내에는 5개의 멤버 변수와 1개의 멤버 메서드가 포함되어 있음. 인터페이스 멤버 변수를 사용하면 디폴트로 public final static이 되기 때문.
- 인터페이스의 상수들
-> public static final int CENTER = 1;
-> public static final int LEFT = 2;
-> public static final int RIGTH = 3;
-> public static final int DOWN = 4;
-> public static final int UP = 5;
- 인터페이스의 메서드
-> public abstract void throwBall(int how);
- 용어즤 정의
-> 추상 클래스(Abstract Class)를 완전한 클래스로 만들기 위해서는 상속(Inheritance)을 통해서 모든 추상 메서드를 구현하면 됨.
반면에 인터페이스(Interface)를 완전한 하나의 클래스로 만들기 위해서는 구현(Implementation)을 통해서 추상 메서드를 구현하면 됨.
============================================================================================================
public class Pitcher implements BodySign{
@Override
public void throwBall(int how) {
// TODO Auto-generated method stub
if(how == BodySign.CENTER){
System.out.println("Center로 던집니다.");
}else if(how == BodySign.LEFT){
System.out.println("Left로 던집니다.");
}else if(how == BodySign.RIGHT){
System.out.println("Right로 던집니다.");
}else if(how == BodySign.DOWN){
System.out.println("Down으로 던집니다.");
}else if(how == BodySign.UP){
System.out.println("Up으로 던집니다.");
}else{
System.out.println("이상한 볼입니다.");
}
}
public static void main(String[] args) {
Pitcher p = new Pitcher(); // 객체 생성
// 1. static final 변수를 이용
p.throwBall(BodySign.CENTER);
p.throwBall(BodySign.LEFT);
p.throwBall(BodySign.RIGHT);
p.throwBall(BodySign.DOWN);
p.throwBall(BodySign.UP);
// 2. 상수 자체를 이용하는 예
p.throwBall(1);
p.throwBall(2);
p.throwBall(3);
p.throwBall(4);
p.throwBall(5);
p.throwBall(1000); // 임의의 수를 이용
}
}
'프로그래밍 정리 > 자바' 카테고리의 다른 글
Runnable, NotRunnable, Dead (0) | 2013.07.07 |
---|---|
쓰레드(Thread) (0) | 2013.07.06 |
일반적인 인터페이스의 구조 (0) | 2013.06.19 |
인터페이스란? (0) | 2013.06.19 |
System.in (0) | 2013.06.18 |