2013-04-28 4 views
1

제 2D OpenGL ES 2.0 게임에서 스프라이트로 사용하기 위해 텍스처 쿼드를 만드는 'Quad'라는 맞춤 클래스가 있습니다. 내가하려고하면, 그러나개체 하위 클래스의 변수에 액세스 할 수 없습니까?

Quad hero = new Hero(); 

:

public class hero extends Quad(){ 

//Variables relating specifically to this character 
int heroX = 0; 
int heroY = 0; 

} 

내가 지금처럼 내 객체를 생성 - 다음

public class Quad(){ 

//Quad creation stuff here 

} 

나는 (이 아닌 innerclass 다른 파일에서 예) 별도의 서브 클래스가 'heroX'및 'heroY'변수에 액세스하려면 아무 것도 얻지 못합니다 .....

그래서 시도해 보겠습니다.

hero.heroX 

그러나 위 변수는이 변수를 선택하지 않습니다.

것입니다. 그러나 내 Quad 클래스에있는 변수를 찾으십시오. 하지만 Quad 클래스를 영웅 클래스로 확장하면 내 객체를 통해 사용할 수 있다고 생각했을 것입니다.

누군가 내 사고가 잘못되어 어떻게 이러한 2 가지 변수에 액세스 할 수 있는지 설명해주십시오. 감사합니다

답변

1

변수 hero은 유형이 Quad이고 Hero이 아니므로 컴파일러는 Quad임을 알고 있습니다. Hero 메소드에 액세스하려면 특정 하위 유형을 사용하십시오.

+0

그가 접근자를 사용한다면 ... 나는 그것이 문제라고 생각하지 않습니다. 다른 언어로, 어쩌면. 그렇지 않다면 내 대답은 끔찍한 잘못입니다. –

+0

@LewsTherin - 정답은 액세스와 올바른 유형이 모두 필요하다는 것입니다. 그러나 Java는 기본적으로 패키지 전용이므로 (동일한 패키지의 모든 클래스는 해당 변수를 읽을 수 있음) 비공개가 아닙니다. – ianhanniballake

+0

예 @ianhanniballake, 방금 영웅으로 선언했습니다. 그래서 이제는 영웅 영웅 = 새로운 영웅()이라고 말하고 있습니다. 그리고 그것은 정상적으로 작동합니다 - 이렇게하면 Quad 클래스와 Hero 클래스의 모든 메서드와 변수에 액세스 할 수 있습니다 - 왜 그런가요? 확실하게 내가 영웅을 선언하고 그 객체를 생성 할 때 새로운 영웅 (쿼드이기도하다)으로 만들면 분명히 컴파일러는 히어로뿐만 아니라 쿼드? 그렇지 않다면, 'Quad hero = new Hero() - 자바 코드에서 여러 번 본 적이있는 것 같은데 ...... 혼란 스럽다! : -/ – Zippy

관련 문제