2013-01-27 3 views
0

Может кто-нибудь объяснить, почему getStartScreen() - единственный метод в интерфейсе Game, который добавляется как нереализованный метод в классе MrNomGame?Вызов одного метода из списка методов интерфейса

public class MrNomGame extends AndroidGame 
{ 
    public Screen getStartScreen() 
    { 
     return new LoadingScreen(this); // Instantiate class 
    } 
} 

public abstract class AndroidGame extends Activity implements Game 
{ 
    AndroidFastRenderView renderView; 
    Graphics graphics; 
    Audio audio; 
    Input input; 
    FileIO fileIO; 
    Screen screen; 
    WakeLock wakeLock; 

@Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
      WindowManager.LayoutParams.FLAG_FULLSCREEN); 

    boolean isLandscape = getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE; 
    int frameBufferWidth = isLandscape ? 480 : 320; 
    int frameBufferHeight = isLandscape ? 320 : 480; 
    Bitmap frameBuffer = Bitmap.createBitmap(frameBufferWidth, 
      frameBufferHeight, Config.RGB_565); 

    float scaleX = (float) frameBufferWidth 
      /getWindowManager().getDefaultDisplay().getWidth(); 
    float scaleY = (float) frameBufferHeight 
      /getWindowManager().getDefaultDisplay().getHeight(); 

    renderView = new AndroidFastRenderView(this, frameBuffer); 
    graphics = new AndroidGraphics(getAssets(), frameBuffer); 
    fileIO = new AndroidFileIO(this); 
    audio = new AndroidAudio(this); 
    input = new AndroidInput(this, renderView, scaleX, scaleY); 
    screen = getStartScreen(); //unimplemented method from MrNomGame 
    setContentView(renderView); 

    PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE); 
    wakeLock = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK, "GLGame"); 
} 

@Override 
public void onResume() { 
    super.onResume(); 
    wakeLock.acquire(); 
    screen.resume(); 
    renderView.resume(); 
} 

@Override 
public void onPause() { 
    super.onPause(); 
    wakeLock.release(); 
    renderView.pause(); 
    screen.pause(); 

    if (isFinishing()) 
     screen.dispose(); 
} 

public Input getInput() { 
    return input; 
} 

public FileIO getFileIO() { 
    return fileIO; 
} 

public Graphics getGraphics() { 
    return graphics; 
} 

public Audio getAudio() { 
    return audio; 
} 

public void setScreen(Screen screen) { 
    if (screen == null) 
     throw new IllegalArgumentException("Screen must not be null"); 

    this.screen.pause(); 
    this.screen.dispose(); 
    screen.resume(); 
    screen.update(0); 
    this.screen = screen; 
} 

public Screen getCurrentScreen() { 
    return screen; 
} 

} 

public interface Game 
{ 
    public Input getInput(); 
    public FileIO getFileIO(); 
    public Graphics getGraphics(); 
    public Audio getAudio(); 
    public void setScreen(Screen screen); 
    public Screen getCurrentScreen(); 
    public Screen getStartScreen(); 
} 
+1

Я думаю, что вы имели в виду единственный метод, который переопределен или реализован. Вопрос неопределен. –

+1

Я предполагаю, что 'Активность' реализует другие методы в коде, который вы не показывали (или код не компилируется). –

+0

. описание не имеет ничего общего с названием. –

ответ

1

MrNomGame класс расширяет абстрактный класс AndroidGame. Как MrNomGame - это конкретный класс, он должен реализовывать все абстрактные методы своего родителя. Абстрактный класс AndroidGame не имеет реализации метода getStartScreen(), и из-за этого он добавляется как нереализованный метод в классе MrNomGame.

+0

Yogesh, но почему только метод getStartScreen() добавляется как нереализованный метод? Кстати, я добавил весь код из абстрактного класса AndroidGame. Взгляни, пожалуйста. –

+0

Потому что ваши методы в абстрактном классе не абстрактны. Если вы объявите их абстрактными, вы заставите все расширяющиеся классы перезаписать этот метод. –

+0

Получил! Теперь это имеет большой смысл. Спасибо! –

Смежные вопросы