java 책 한권 보고(스타일 java 프로그램이) 헬로, 안드로이드 책 공부중인 직장인 입니다.
제목과 같이 super(context)의 의미를 보르겠습니다. super는 부모 클래스라고 하는데...
다음 코드 this.game=(Game)context;
context는 부모 클래스의 context를 말하며, 이 context를 Game으로 형변환 해서 현재 class의 game으로
치환하라는 의미인가요?
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.Paint.FontMetrics;
import android.graphics.Paint.Style;
import android.util.Log;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
import android.view.animation.AnimationUtils;
public class PuzzleView extends View {
private static final String TAG="Sudoku";
private final Game game;
public PuzzleView(Context context) {
super(context);
this.game=(Game)context;
setFocusable(true);
setFocusableInTouchMode(true);
}
초짜의 어이 상실한 질문입니다.
6개월 안에 프로가 되어야 하는데 고수님들의 많은 훈수 기다립니다.
먼저 감사드립니다.
마침 저에게도 위 소스가 있어서 살펴 보았습니다.
먼저 super(context); 는
말씀대로 상위 부모 Class의 생성자를 호출 하는것 입니다.
public class PuzzleView extends View
View Class를 상속 하고 있으니 당연히 View 의 생성자를 부르는 것이구요
this.game = (Game)context; 은
Game.java 의 onCreate 함수를 보시면
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d(TAG, "onCreate");
int diff = getIntent().getIntExtra(KEY_DIFFICULTY,
DIFFICULTY_EASY);
puzzle = getPuzzle(diff);
calculateUsedTiles();
puzzleView = new PuzzleView(this); <-- PuzzleView생성자에 Game 자신의 context를 넘김
setContentView(puzzleView);
puzzleView.requestFocus();
}
puzzleView = new PuzzleView(this);
PuzzleView생성자에 Game 자신의 context를 넘기고 있습니다.
아래 Activity Class의 상속도를 보시면
java.lang.Object
? android.content.Context
? android.content.ContextWrapper
? android.view.ContextThemeWrapper
? android.app.Activity
와 같이 Context Class를 상속 하고 있습니다.
이를 this.game = (Game)context; 로 받아 오는 것이죠
이것이 가능한 이유는 Activity Class를 상속받은 Game Class 역시
Context Class를 상속 하고 있기 때문입니다.
더욱 고수분께서 보충설명을 ^^;;