Japanese subtitles

← Inheriting Behavior

Get Embed Code
13 Languages

Showing Revision 12 created 10/08/2015 by tama_ino.

  1. ちょっとだけ JustJava アプリに戻りましょう
  2. 「 MainActivity 」クラスの
    「 displayMessage 」メソッドを見ましょう
  3. そのものはここから始まって
    少し分かりやすく書いてあります
  4. 創作中の変数「 orderSummaryTextView 」を
    見分けられますね
  5. この変数データタイプは
    「 TextView 」でした
  6. まだ ここの部分は理解していないのですけどね
  7. 次の行はテキストビュー上の
    メソッドをコールします
  8. 今回は上に書いてある変数名と
    同じものを使います
  9. ですから「 orderSummaryTextView.setText 」
    をコールします
  10. それから メソッド入力として
    ストリングを渡します
  11. このストリングメッセージは元々は
    入力パラメーターとして
  12. ディスプレイの
    メッセージメソッドになりました
  13. ここで まだ理解していない
    この部分のコードを詳しく見ていきましょう
  14. 「 findViewById 」とあるのは
    メソッドコードのようです
  15. なぜなら これはカッコ囲みの
    入力引数に見える箇所の前にあるからです
  16. しかし 奇妙なことにこのメソッドは
    このクラスの中のどこにも見当たらないです
  17. もし この名前をダブルクリックして
    コマンド+ F もしくは
  18. Windows で Ctrl + F を押しすと
    ファイル内を検索できます
  19. 2つだけ「 findViewById 」を見つけました
  20. 2つとも似たように使われています
  21. 他に「 findViewById 」という
    メソッドは無いですね
  22. そういえば 前に
    MainActivity クラスで
  23. 「 setContentView 」コールの場面を
    見ましたが ファイル内検索をしても
  24. 今回と同様に MainActivity 内では
    見つかりませんでした
  25. では どこにそのメソッドが
    定義されているのでしょうか?
  26. まず MainActivity は
    実はとても小さいファイルなのです
  27. たった約 90 行の長さです
  28. しかし 実はそこには目に見えない
    より多くのクラスがあるのです
  29. コードが「 extends AppCompatActivity 」
    と言います
  30. これは MainActivity が
    AppCompatActivity クラス内の
  31. 機能的拡張子だという意味です
  32. コンピューターのここに
    ActionBarActibity があっても構いません
  33. 古いバージョンがあるだけです
  34. 使うべき最新バージョンは
    AppCompatActivity です
  35. そして AppCompatActivity は
    古いアンドロイドデバイスを
  36. サポートする上位互換性があります
  37. AppCompatActivity は
    アンドロイドサポートライブラリの一部です
  38. そこならアンドロイドに適応した最新の
    ユーザーインターフェイスを使えます
  39. 古いアンドロイドデバイスを
    使っていたとしても
  40. AppCompatActivity クラスを
    拡張することによって
  41. MainActivity の無料範囲で
    全ての機能性と状況とメソッドを
  42. ここから手に入れることができます
  43. ここからコードをコピー&ペースト
    する必要はないのです
  44. シンプルにクラスを拡張できます
  45. 興味がありましたら
  46. AppCompatActivity の情報を
    もっと Google 検索で見つけ出せます
  47. ここには AppCompatActivity クラスの
    参考になるドキュメントがあります
  48. 私は Chrome 拡張子を
    インストールしているので
  49. ソースも見ることができます
  50. これが AppCompatActivity クラスが
    定義されたコードです
  51. 多くの機能がここにあるのが
    分かると思いますが
  52. その動きを理解する必要はないのです
  53. 知る必要があるのは AppCompatActivity を
    拡張した時に
  54. 全ての機能を無料で手に入れられる
    ということです
  55. ハイレベルになると
    この様に視覚化ができます
  56. これは MainActivity のクラスを
    定義したものです
  57. いくつかのメソッドの定義はここです
  58. AppCompatActivity を拡張したら
    この状況にアクセスして
  59. AppCompatActivity から
    メソッドを持ってこれます
  60. 今 物理的に MainActivity クラスに
    書きこむことはできませんが
  61. それらをここに想像することはできます
  62. なぜなら ここに状態とメソッドを
    同様に引用できるからです
  63. この様にしてコードが setContentView や
    findViewById などをこうして
  64. 引用できます
  65. これらのメソッドを引き継がなかったので
    MainActivity の中に定義しませんでした
  66. MainActivity はデバイスの
    スクリーンとして示されます
  67. MainActivity の中でそれに向けた
    コードを書かずとも 同様に引き継いでいます
  68. 状態やメソッドを AppCompatActivity から
    クラスに直接は持っていきませんが
  69. 今ならそれらがそこにあると知っているし
    引用することも可能です
  70. 引き継ぐものと言えば
    そこには長所と短所があります
  71. ある時は 動作を引き継ぎたがるでしょうし
  72. 別の時には
    少し改変したがるかも知れません
  73. もし 引き継ぎクラスのものから
    いくつか特性を変えたいなら
  74. あるメソッドを上書きすることができます
  75. 「 @override 」をメソッドの最初に加えれば
  76. あなたが AppCompatActivity からの
    メソッドを使いたくなくて 代わりに
  77. ここに明示したバージョンにしたいのだと
    コンピューターが理解します
  78. これは難解ですし
    多くの実践を必要とします
  79. しかし AppCompatActivity クラスからの
    メソッドを上書きする一例を
  80. 私たちは見たことがあります
  81. そのメソッドは the on create method です
  82. MainActivity 内の the on create method を
    上書きすることにより
  83. メソッドコールの際に起きるべき事のための
    私たち自身の行いを明示しています
  84. 今すぐ理解できなくても心配しないでください
  85. オブジェクト指向プログラミング概念の
    展望を短くして
  86. 紹介しているだけですから
  87. あなたが手間取る問題を持つだろうことは
    完全に予想がつきます
  88. それらを全て理解するためには
    もっとそれについて読み上げる
  89. 必要があることも