• ベストアンサー

Android onDraw()のオーバーライド

Androidプログラミングに関しての質問です。 図形を描画する際にonDraw()メソッドをオーバーライドしますが、参考書などで処理の1行目に、 protected onDraw(Canvas cs){ super.onDraw(cs) ◀ここ } というコードが書かれていることが多いのですが、これを書く理由がわかりません。 実際、この1行を消しても変わらず正常に動いているように感じます。 ご存知の方、是非教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
noname#177743
noname#177743
回答No.1

これはスーパークラスのonDrawを呼び出す処理です。 Javaでは、ご存知のようにクラスを継承して新しいクラスを定義していきます。このonDrawもスーパークラスにそのための仕組みが実装されているからこそ、画面更新時に呼び出されて描画されるようになっているわけです。 もし、スーパークラスのメソッドを呼び出さなかった場合には、メソッドをオーバーライドするとスーパークラスのメソッドは呼び出されなくなります。もしそこに何らかの描画に必要な処理が記述されていた場合には、それらは実行されなくなるわけです。 Viewクラスには特にonDrawを実装した処理はなかったように思いますので、これを書かなくても特段に問題は発生しないでしょう。ただ、画面描画のように重要なものは、スーパークラス側に重要な処理が実装されていることがよくあります。こうした場合、単にメソッドをオーバーライドするだけでスーパークラスのメソッド呼び出しを行わないと、その重要な処理が実行されないままになってしまいます。 スーパークラス側にどんな処理があるのか、たいていの場合にはわかりません。ですから、「どうなってるかわからないなら、とりあえず呼び出しておけ」となるわけです。

purinchan_ppp
質問者

お礼

回答ありがとうございます。 わかりやすい解説、ありがとうございました。

関連するQ&A