자바 interface 내에 배열 참조...
나길
안녕하세요.
궁금한게 있어서 질문드립니다.
아래와 같이
// TestInterface.java
public interface TestInterface {
String testString = hahahaha;
String testString2[] = {haha, hoho, hehe};
}
테스트 인터페이스를 작성하고
public class GameSide extends Canvas
implements Runnable, TestInterface
{
...
g.drawString(testString, 0, 0, 0); // 문제없음
g.drawString(testString2[0], 0, 0, 0); // 참조 오류가 납니다.
...
}
위와 같이인터페이스에 있는 배열을 참조하면 에러가 납니다.
그래서
public class GameSide extends Canvas
implements Runnable, TestInterface
{
...
String testString2[] = {haha, hoho, hehe}; g.drawString(testString, 0, 0, 0); // 문제없음
g.drawString(testString2[0], 0, 0, 0); //문제없음
...
}
이런식으로 내부에 선언하면 아무 문제가 없습니다.(참고로 모바일 플랫폼입니다.)
아마 인터페이스에 대한 제 이해가 부족해서 생기는 문제같은데
왜 이런결과가 나오는지 궁금하내요.
그럼 답변 부탁드립니다.
-
바름
원래 인터페이스는 메서드 중심이라서 상수를 선언할 일이 별로 없지만, 그래도 인터페이스에 관련된 거라면 선언 못할이유가 없죠. 엉뚱하게 사용하는 사람들이 많아서 하는 얘기 같습니다.
-
피리
먼저, 인터페이스는 자바에서의 구조적인 프로그래밍과 재사용성으로 각광을 받고 있는 상속부분의 단점인 다중상속이 안된다는 점을 해결하기 위해 사용할 수 있으며, 몸통이 없는 추상매소드로만 구성된 클래스를 인터페이스라고 합니다. 맴버변수가 선언가능하나 일반적으로 꼭 필요할 때 아니면 사용을 안한답니다. 클래스를 만들어 상속을 하심이..
-
파도
인터페이스에서 상수나 상수배열을 사용할수는 있지만, 피해야할 방법으로 이야기 하는 경우를 많이 보았습니다.
그것이 왜 좋이 않은 방법인지 모르겠습니다. 혹 관심있으신분, 설명좀...^^; -
가을바람
감사합니다.
사실 제 소스가 아니라 다른분 소스를 받은건데 저런식으로 구현되 있더군요.
이통사에 런칭까지 된 소스라 제가 먼가 모르고 있는건가 했습니다.
그나저나 그 많은 라인을 손대려면.. (오늘밤도 삽질인가..) -
뿌닝
interface TestInterface {
String testString = \hahahaha\;
String testString2[] = {\haha\ -
안찬
자바 기초 구문에 대해 공부하세요
interface, abstract 클래스, 일반 클래스의 차이에 대해 아시면 됩니다
interface 에서는 함수의 선언 이상의 행동은 불가능합니다.