毎度おなじみ?のJavaBasicコーナーです。
今回は、Android実装で使用するJavaの考え方を中心に記載します。
ちなみに今までのJavaBasicはイチから全部を作成するためのもの。。。低レベルな実装からおこなっております。Androidでちょっと複雑なこと、例えば3Dモデルを描画するとか、。。。、をやろうとするときに使えるものです。つまり文法とファイル入出力などです。
キホンですね。よかったらどうぞ。
AndroidでのJava Basic
Androidでの実装は、Javaで作成される画面、アクション、通信などの実装が行われています。
いわゆる「フレームワーク」としての実装があるので前回作成した「MainActivity」クラスのみの実装でHello Worldが表示できます。
このフレームワークに関しては、こちらのページも参照して欲しいのですが、大まかに必要な部分のみを実装すれば動く便利アイテムというイメージです。
具体的に
Android Studioでプロジェクトを作成したときに自動生成されたファイルがたくさんあります。
主要な部分としては以下の通りです。
- activity_main.xml
- MainActivity.java
- AndroidManifest.xml
他にもありますが、フレームワークの中身を見るのが目的ではないので、この3ファイルに着目します。
1のactivity_main.xml
は以前記載した記事でHello Worldの文言を変更するときに触りました。
Androidフレームワークでは、このXMLファイルにかいたプロパティを読み込んでJava側で表示するものを作成しています。
そして、XMLを読み込む処理は下の部分です。
@Override protected void onCreate(Bundle savedInstanceState) { // 親クラスのonCreateを実行する super.onCreate(savedInstanceState); // activity_main.xmlを読み込む setContentView(R.layout.activity_main); }
なので、画面の見た目を作成する方法としては2通りあるということになります。
- XMLで作成する
- Javaコードで作成する
自分はJavaコードで作成する方に慣れているのでXMLはあまり使用しませんでしたが、ちょうど良い機会なので使ってみました。
設定するプロパティは変わらないのでXMLから入ってもJavaコードから入っても良いと思います。
しかし、世の中「GUIで実装する」ということもあるので。。。なんともいいがたし。。。
とりあえずはコードとXMLの関係がわかれば問題ないと思います。
クラスの継承関連
自動生成されたコードを見てみます。
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } }
こんな感じだったと思います。
注目して欲しいのはextends AppCompatActivity
の部分です。
フレームワークたる部分になるのでプログラミング初心者にはちょっと難しいかもですが、簡単にいうと『「extends」すると細かい処理は全部フレームワークがやってくれる』というところです。
クラスを継承する
ちなみに「extends」というのは日本語で「継承」と言います。クラスを継承するというのは、わかりづらい概念だと思います。自分は理解するのに結構時間がかかりました。
理解するポイントとしては、以下の通りです。
- 関係性を見て見る
- 実装して動かして見る
- どこがどのようになっているのか整理する
というわけで、簡単なアプリを作成して見るのが一番早いというわけです。
参考程度ですが、継承に関してOracleDocを引用して継承についてコードを交えて記載した記事があるので、それもよかったらどうぞ。
参考に下にリンクをつけておきます。
サンプル実装
ちょっと作成して見ました。
<親クラス>
public class ParentCls { private String parentName; protected int parentId; public String parentFunc; public ParentCls() { System.out.println("ParentCls is here"); } private void say() { System.out.println("private: say parent"); } protected void say(String message) { System.out.println("protected: " + message); } public void say(String message, int num) { System.out.println("public: " + message + " in " + num); } }
<子クラス>
public class ChildCls extends ParentCls{ public void sayChild() { say("Hello Parent"); } }
<実行したテストコード>
public class ExampleUnitTest { @Test public void testPrentChild() { ChildCls child = new ChildCls(); // 子クラスから親クラスのメソッド child.say("Java Basic"); // 子クラスのメソッド child.sayChild(); } }
実行結果
今回作成したのはAndroidでのテスト実行クラスです。
テスト実行処理は下のようなコードで実行しました。
public class ExampleUnitTest { @Test public void testPrentChild() { ChildCls child = new ChildCls(); // 子クラスから親クラスのメソッド child.say("Java Basic"); // 子クラスのメソッド child.sayChild(); } }
今回はここら辺で失礼します。
でわでわ。。。
関連ページ
Eclipse セットアップ
- Java Install Eclipse〜開発ツールのインストール〜
- TensorFlow C++環境〜EclipseにCDTをインストール〜
- Setup OpenGL with Java〜JOGLを使う準備 for Eclipse〜
- Eclipse Meven 開発手順〜プロジェクトの作成〜
- Java OpenCV 環境セットアップ(on Mac)
- Eclipse SceneBuilderを追加する
- JavaFX SceneBuilder 〜EclipseとSceneBuilder連携~
Java Basic一覧
- Java Basic Level 1 〜Hello Java〜
- Java Basic Level2 〜Arithmetic Calculate〜
- Java Basic Level3 〜About String class〜
- Java Basic Level 4〜Boolean〜
- Java Basic Level 5〜If Statement〜
- Java Basic Summary from Level1 to 5
- Java Basic Level 6 〜Traning of If statement〜
- Java Basic Level8 〜How to use for statement〜
- Java Basic Level 8.5 〜Array〜
- Java Basic Level 9〜Training of for statement〜
- Java Basic Level 10 〜While statement 〜
- Java Basic Swing〜オブジェクト指向〜
- Java Basic Swing Level 2〜オブジェクト指向2〜
- サンプル実装〜コンソールゲーム〜
- Java Basic インターフェース・抽象クラスの作り方
- Java Basic クラスとは〜Step2_1〜
- Java Basic JUnit 〜テストスイートの作り方〜
Git関連
- Java Git clone in Eclipse 〜サンプルの取得〜
- Eclipse Gitリポジトリの取得 〜GitからソースをPullしよう〜
- IntelliJ IDEA Git〜Gitリポジトリからクローン〜