프로그래밍 정리/자바

인터페이스에서 사용할 수 있는 멤버 변수

주누다 2013. 6. 19. 14:16
반응형

- 인터페이스는 순수하게 추상 메서드로 이루어진 클래스. 인터페이스를 계속해서 클래스라고 칭하는 것은 인터페이스도 컴파일하면 .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); // 임의의 수를 이용

}


}


============================================================================================================

- BodySign 인터페이스를 구현하고 있는 Picther 클래스
-> public class Pitcher implements BodySign{...}
-> Pitcher 내부에는 반드시 BodySign의 추상 메소더를 모두 구현해야 함. BodySign에 하나의 추상 메서드를 포함하고 있기 때문에 Pitcher 클래스 내에서 다음과 같이 구현.

- 인터페이스는 객체를 생성할 수는 없지만 인터페이스의 형을 이용해서 public static final 에 접근할 수 있음. 스태틱(Static) 자체는 객체 메모리 생성과 관련없기 때문에 인터페이스의 이름으로 접근가능한 것.


반응형

'프로그래밍 정리 > 자바' 카테고리의 다른 글

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